分享

php 析构方法 详解

 gearss 2016-05-28

析构方法说明:
1.      析构方法会自动调用
2.      析构方法主要用于销毁资源(比如释放数据库的链接,图片资源...销毁某个对象..);

析构函数会在到对象的所有的引用都被删除或者当对象被显示销毁时执行.   

3.      析构方法调用顺序是,先创建的对象后被销毁
4.      析构方法什么时候被调用
(1)    当程序(进程结束)退出时
(2)    当一个对象称为垃圾对象的时候,该对象的析构方法也会被调用,
(3)    所谓垃圾对象,就是指,没有任何变量再引用它.
(4)    一旦一个对象成为垃圾对象,析构方法就会立即调用

析构方法小结:
①php5加入的的析构方法function __destruct()
②析构方法没有返回值也不接受参数
③主要作用是释放资源的操作,并不是销毁对象本身。
④在销毁对象前,系统自动的调用该类的析构方法   
⑤一个类最多只有一个析构方法。

析构方法实例1:

  1. <?php  
  2. class Person  
  3. {  
  4.     public $name;  
  5.     public $age;  
  6.     public $conn;  
  7.                 
  8.     //构造方法  
  9.     public function __construct($name,$age)  
  10.     {  
  11.         $this->name=$name;  
  12.         $this->age=$age;  
  13.         //假设此处有一个打开一个$conn链接数据库资源的函数体  
  14.     }  
  15.     //写一个析构方法 __ 是两个下划线  
  16.     function __destruct()  
  17.     {  
  18.         echo $this->name."      销毁资源   关闭数据库 . . <br/>";  
  19.     }  
  20. }  
  21. $p1=new Person("1.贾宝玉",16);  
  22. $p1=null; //$p1掷空是对其对应地址下标掷空,如$p1[0x678],即掷空了中括号中的数据,地址对应的数并没有改变。  
  23. //$p1掷空马上就要被销毁,所以p1p2p3的销毁顺序为:$p1->$p3->$p2  
  24. $p2=new Person("2.林黛玉",14);  
  25.   
  26. $p3=new Person("3.王熙凤",15);  
  27. ?>  
析构方法实例2:
  1. <?php  
  2.     //创建一个人类  
  3.     class Person  
  4.     {  
  5.         //下面是人的成员属性  
  6.         public $name; //人的名子  
  7.         public $sex; //人的性别  
  8.         public $age; //人的年龄  
  9.   
  10.         //定义一个构造方法参数为姓名$name、性别$sex和年龄$age  
  11.         public function __construct($name,$sex,$age)  
  12.         {     
  13.             //通过构造方法传进来的$name给成员属性$this->name赋初使值   
  14.             $this->name=$name;  
  15.             //通过构造方法传进来的$sex给成员属性$this->sex赋初使值   
  16.             $this->sex=$sex;  
  17.             //通过构造方法传进来的$age给成员属性$this->age赋初使值   
  18.             $this->age=$age;  
  19.         }  
  20.   
  21.         //这个人的说话方法  
  22.         function say()  
  23.         {  
  24.             echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br/>";  
  25.         }   
  26.   
  27.         //这是一个析构函数,在对象销毁前调用  
  28.         function __destruct()  
  29.         {  
  30.             echo "再见".$this->name."<br/>";  
  31.         }  
  32.     }  
  33.   
  34.     //通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄  
  35.     $p1=new Person("张三","男", 20);  
  36.     $p2=new Person("李四","女", 30);  
  37.     $p3=new Person("王五","男", 40);  
  38.   
  39.     //下面访问$p1对象中的说话方法  
  40.     $p1->say();  
  41.     //下面访问$p2对象中的说话方法  
  42.     $p2->say();  
  43.     //下面访问$p3对象中的说话方法  
  44.     $p3->say();  
  45. ?>  
输出结果如下:



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多