免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 961 | 回复: 0
打印 上一主题 下一主题

PHP5 class 学习笔记1 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-23 09:38 |只看该作者 |倒序浏览
   
闲的无聊,把网络上较流行的关于PHP5面向对象的部分看了看,边看边做笔记,希望和我一样的
菜鸟的PHPer可以交流一下。

PHP5和PHP4稍有不同的是类的实例可以作为函数的参数或者作为类中方法的参数进行传递。
传递的方法为传递这个实例的地址。像是引用传递。如果函数改变这个参数的属性值,
会影响到其他函数使用的这个参数的属性值。

比如建个简单的类
Class VarClass{
Public $name='null';
Public function set($str){
$this->name = $str;
}
Public function p(){
Print("My name is : $this->name
\n");
}
}

//可以做为类方法中的参数进行传递
Class TestClass{
Public function make(VarClass $t){
$t->p();
}
}

//也可以做为普通定义的函数参数进行传递
Function TestFun(VarClass $t){
$t->p();
}

//可以这样测试运行。
$test = new VarClass;
$test->set('Tester');

//做为类方法中的参数,它能正确的运行。
TestClass::make($test);
//输出为:My name is : Tester

//做为普通自定义的函数的参数。它也能很好的运行。
TestFun($test);
//输出为:My name is :
Tester

?>

如果上面的$test不是VarClass的一个实例的话,则会产生一个 fatal (致命的) 错误。程序被终止运行。
可以把上面的TestClass::make($test);改成
TestClass::make($test1);
或者 TestFun($test); 改成 TestFun($testx);等,都会得到一个致命的错误。

参数的传递不再是PHP4中的值传递。而是句柄(或者说是实例的指针)如果对这个的参数的属性进行更改。
会影响到其他使用它的函数。
比如修改上面那段代码
Class VarClass{
Public $name='null';
Public function set($str){
$this->name = $str;
}
Public function p(){
Print("My name  $this->name
\n");
}
}

Class TestClass{
Public function make(VarClass $t){
$t->set('was modified by TestClass');
$t->p();
}
}

Function TestFun(VarClass $t){
$t->set('was modified by TestFun');
$t->p();
}

//可以这样测试。
$test = new VarClass;
$test->set('is Tester');

//开始看看没有被改变的值
$test->p();
//输出为:My name is
Tester

//在TestClass中被更改后
TestClass::make($test);
//输出为:My name was
modified by TestClass


//在TestFun中被更改后
TestFun($test);
//输出为:My name was modified by
TestFun

最后我们看看原来的实例的输出。
$test->p()
//输出为:My name was modified by
TestFun

?>
以上测试环境为WINXP+APACHE2+PHP5.1.4 先写这些,等看到后面再写笔记了。^o^
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13344/showart_159141.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP