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