首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > PHP > PHP5 class 学习笔记1
【标  题】:PHP5 class 学习笔记1
【关键字】:PHP5,class
【来  源】:http://www.cublog.cn/u/13344/showart.php?id=159141

PHP5 class 学习笔记1

    

闲的无聊,把网络上较流行的关于PHP5面向对象的部分看了看,边看边做笔记,希望和我一样的

菜鸟的PHPer可以交流一下。

 

PHP5PHP4稍有不同的是类的实例可以作为函数的参数或者作为类中方法的参数进行传递。

传递的方法为传递这个实例的地址。像是引用传递。如果函数改变这个参数的属性值,

会影响到其他函数使用的这个参数的属性值。

 

比如建个简单的类

<?php

Class VarClass{

Public $name='null';

Public function set($str){

$this->name = $str;

}

Public function p(){

Print("My name is : $this->name <br>\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中的值传递。而是句柄(或者说是实例的指针)如果对这个的参数的属性进行更改。

会影响到其他使用它的函数。

比如修改上面那段代码

<?php

Class VarClass{

Public $name='null';

Public function set($str){

$this->name = $str;

}

Public function p(){

Print("My name  $this->name <br>\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^

共享内存使用:【上一篇】
Developing WebSphere MQ Client Applications in C++:【下一篇】
【相关文章】
  • RHEL AS4U3+httpd2.2+apache-tomcat5.5+mysql5.0+php5
  • Singleton implementation using metaclass
  • 用metaclass实现AOP风格的Profiler
  • 用PHP5进行三层开发(Smarty应用)
  • 关于3DMAX SDK Class_Id
  • nhibernate source code analyzed (abstract classes in nhibernate-2.0)
  • 0817CLass
  • 局部类(Local class)的用法演示
  • Php5 GPC绕过缺陷(转)
  • win2k下配置php5和IIS
  • 【随机文章】
  • 一个连接池的例子 (一)
  • 我的系分之路[1]
  • 视讯宽带通信技术的新发展
  • 手机
  • 在linux下如何启用framebuffer
  • 浅谈Ruby on Rails - Rails 的 MVC
  • WS-Security中WSE2.0和SUN JWSDP1.5的协作
  • AJAX基础教程
  • 在powerbuilder中向Excel传递数据
  • pppoe server
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.