php专区

 首页 > php专区 > PHP高级 > 面向对象MVC > php类的魔术方法 - php面向对象

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

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

php类的魔术方法

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

1、构造函数__construct

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

2、析构函数__destruct

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

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

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

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

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

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

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

  1. class Session 
  2.  protected function __call($func,$para
  3.  { 
  4.   echo '方法不存在:’func." ".'参数为:'." "
  5.   print_r($para); 
  6.  } 
  7. $s=new Session (); 
  8. echo $c->getNames('hello','you');  
  9. /* 
  10. 输出: 
  11. 方法不存在:getNames 
  12. 参数为: 
  13. Array 
  14. ( 
  15.     [0] => hello 
  16.     [1] => you 
  17. ) 
  18. */ 
  19. ?> 
分享到:
PHP面向对象编程入门教程 - php面向对象
PHP面向对象编程入门教程 /*  类的声明   *    1.你要开发的是什么,确定写什么类   *    2.类中的成员一定要属于这个类      *       [修饰类的关键字] class 类名{   *         成员属性:   *         成员方法:   *...
php类中protected与const属性详解 - php...
php类中protected与const属性详解 在php中protected是私有变量,若该成员被声明称protected(保护),则代表只能在该类和该类的子类中使用该字段,而const是一个常量它的值一旦赋值不能被改变,下面看两个例子. const属性:用const属性定义的字段是一个常量,类中的常量和静态变量类似,不同之处就是...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……