首页 > 语言 > PHP > 正文

php类的魔术方法

2024-09-04 11:43:44
字体:大 中 小
来源:转载
供稿:网友

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

1、构造函数__construct

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

2、析构函数__destruct

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

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

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

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

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

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

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

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

上一篇:php 类的初始化

下一篇:php类和对象

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表