PHP中的construct(构造方法)和destruct(析构方法)

 1 <?php
 2 
 3                 /*燕十八 公益PHP培训 
 4     课堂地址:YY频道88354001 
 5     学习社区:www.zixue.it */
 6 
 7 
 8     
 9     header('content-type:text/html;charset=utf-8');
10 
11     class Dog{
12         
13          function __construct($name,$age){//给Dog对象进行初始化,当对象创建的时候,也就是new的时候开始调用
14             $this->name=$name;
15             $this->age=$age;
16         }
17         public $name='';
18         public $age='';
19         function __destruct(){//当Dog类没有使用的是后开始调用
20             
21             echo 'Dog is die!';
22         }
23 
24     }
25     $a=new Dog('大黄',10);//$a实例化了一个对象,这时__construct开始调用了
26     $d=$c=$b=$a;//定义了$b,$c,$d共同指向了$a指向的地址,对象是地址引用
27 
28     echo $b->name.'<br/>';//取$a,$b,$c,$d指向的name属性:注:$a,$b,$c,$d指向了同一个对象
29     echo $c->name.'<br/>';
30     echo $d->name.'<br/>';
31     
32     echo '<hr/>';
33     $b=new Dog('小花',5);//$b重新实例化了一个新的对象$b指向的对象地址发生了变化不再指向$a,$c,$d,指向对象的地址了
34 
35     echo $b->name.'<br/>';//取出$b指向的对象的name属性
36         
37         unset($b);//删除对象$b此时$b对象没有使用了,开始调用__destruct方法
38 
39     echo $c->name.'<br/>';//$c,$d,$a指向的地址没有变
40     echo $d->name.'<br/>';
41     //代码执行完后,最后调用$a,$c,$d对象的__destruct方法
42 
43     /*
44     大黄
45     大黄
46     大黄
47     ---------------------------------------
48     小花
49     Dog is die!//$b释放后调用的__destruct
50     大黄
51     大黄
52     Dog is die!//$a,$c,$d释放后调用__destruct

 

posted @ 2012-11-06 23:32  arvim  阅读(669)  评论(0编辑  收藏  举报