网站地图    收藏   

主页 > php专栏 > php面向对象 >

php类的魔术方法 - php面向对象

来源:自学PHP网    时间:2014-11-30 12:29 作者: 阅读:

[导读] 在php 5中,提供了构造函数,析构函数,对象克隆的方法,重载方法等.1、构造函数__construct如果在类申明中__construct函数,将被当成一个构造函数并且在对象建立时被执行,但在php4中,构造函...

php类的魔术方法

在php 5中,提供了构造函数,析构函数,对象克隆的方法,重载方法等.

1、构造函数__construct

如果在类申明中__construct函数,将被当成一个构造函数并且在对象建立时被执行,但在php4中,构造函数的名称与类名相同就是构造函数哦,这一点有一些不同。

2、析构函数__destruct

如果在php类中申明了,在对象被销毁时调用__destruct函数

下面来看个实例,代码如下:

  1. <?php 
  2. class Session 
  3.     public  function __construct() 
  4.      echo '构造函数执行'
  5.     } 
  6.     public  function __destruct() 
  7.     { 
  8.       echo '析构函数执行'
  9.     } 
  10. }//开源代码phpfensi.com 
  11. $Obj = new Session; 
  12. unset($Obj);//删除对象, __destruct()会被调用的 
  13. //输出 
  14. //构造函数执行 
  15. /析构函数执行 
  16. ?> 

上面在使用new创建对象时就执行了__construct,对象结束时就执行了__destruct()

3、__clone()克隆函数,代码如下:

  1. <?php 
  2. class Session 
  3.  public $age = 20; 
  4.  public $sub = null; 
  5.  public function __clone() 
  6.  { 
  7.   $this->sub=clone $this->sub; 
  8.  } 
  9. class Session 2 
  10.  public $value=5; 
  11. $s   = new Session; 
  12. $s->sub=new Session 2; 
  13. $s2 = clone $s
  14. $s->sub->$value =10; 
  15. echo $s2->sub->$value
  16. ?> 

4 现在来看关于重载函数__get ,__set,__call函数,代码如下:

  1. <?php 
  2. class Session 
  3.  protected function __call($func,$para
  4.  { 
  5.   echo '方法不存在:’func." ".'参数为:'." "
  6.   print_r($para); 
  7.  } 
  8. $s=new Session (); 
  9. echo $c->getNames('hello','you');  
  10. /* 
  11. 输出: 
  12. 方法不存在:getNames 
  13. 参数为: 
  14. Array 
  15. ( 
  16.     [0] => hello 
  17.     [1] => you 
  18. ) 
  19. */ 
  20. ?> 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论