zoukankan      html  css  js  c++  java
  • PHP之__destruct()

    __destruct()

    当对象被销毁时候,系统内部会自动调用该方法。

    分三类:

         1.当php代码 声明周期执行完毕结束后; 会自动调用该方法

       2.当对象被unset()后 ;系统会自动调用该方法

       3.当对象被重新赋值后 ;系统会自动调用该方法

     1 class Test{
     2 
     3             public function __destruct(){
     4 
     5                 echo "对象被销毁之后,执行的代码";
     6             }
     7         }
     8 
     9         $test = new Test();
    10 
    11         unset($test);
    12 
    13         $test = 'aaaa';
    14 
    15     析构函数的作用是干嘛的:
    16         就是当一些创建资源对象在运行完毕之后需要关闭连接 而执行的代码段
    17         mysql数据连接完毕之后需要关闭连接 
    18         fopen()打开文件句柄 执行完毕之后关闭
    19         session 会话结束之后 销毁session ,destroy()
    20 
    21 
    22 
    23     析构函数的作用:
    24         保证数据持久化 更新。 
    25         每个对象,都对应数据库中的表的每条记录。
    26 
    27             create table student(
    28                 sid int unsigned primary key auto_increment,
    29                 name varchar(32) not null,
    30                 gender nuem('male','female') not null
    31             )    
    32 
    33 
    34             class Student {
    35                 public $sid;
    36                 public $name;
    37                 public $gender;
    38 
    39                 public function __construct($sid){  //创建对象的时候
    40                     $sql = "select sid,name,gender from student where sid = $sid ";
    41                 }
    42 
    43                 public function save(){   //数据更新之后需要进行保存,,是每次更新完毕之后要进行保存的。
    44                     $sql = "update student set name= $this->name, gender=$this->gender where sid =$sid ";
    45                 }
    46 
    47                 public function __destruct(){     //当每次更新学生信息之后需要同步到数据库中的操作
    48                     $this->save();       
    49                 }
    50             }
    51 
    52             $s = new Student();
    53             $s ->name = 'xujin';
    54             $s ->save();   //因为每次更新数据 都需要进行数据库的同步更新 所以每次都需要调用该函数。 如果 把该函数放在析构函数中 当每次php代码段执行完毕之后 会自动调用保存 更新操作 实施数据的同步更新 以及数据的可持久化。
    55 
    56             -------------------------------------------------------------------------------------------------------------------------------------------
    57             class Test{
    58 
    59                 public $db_url='localhost:3306';
    60                 public $db_user='root';
    61                 public $db_pwd = 'root';
    62 
    63                 public function __construct(){
    64                     $link = mysql_connect($db_url, $db_user, $db_pwd);  //连接数据库操作
    65                 }
    66 
    67                 public function __destruct(){
    68                     mysql_close($link);    //关闭这个连接资源   而不是销毁这个对象  当销毁对象触发时 系统会自动调用 析构函数来执行 关闭资源这个连接。
    69                 }
    70             }
    71             
    72             $dao = new Test();
    73             unset($dao);       tips:当对象被unset之后 对象确实被销毁啦,但是 mysql的连接资源依然存在 还可以执行sql语句
    74 
    75             $sql = "show databases";
    76             $result = mysql_query($sql);   //结果有返回值 说明 销毁对象 之后 资源连接 依然存在
    77 
    78 
    79             ------------------------------------------------------------------------------------------------------------------------------------------
    80             tips:析构方法不是销毁对象本身的,而是用来关闭资源连接的。
  • 相关阅读:
    SSIS-SqlTask控件使用
    每年有20万人进军IT行业,为何人才缺口依旧这么大?
    推荐!5 本经典著作描绘C++学习路线图!
    C语言有了"链表"还用"数组"干嘛?因为你傻呀,怕你学不会!
    如何优化【if else】的面条代码,我们一起来解决代码复杂度问题!
    为什么要学编程一定要热爱?对不起我并不热爱编程,我只喜欢创造!
    程序员如何应对双十一的大数据冲击!是服务器先崩溃还是程序员先崩溃?
    【C语言项目】这21个入门练手项目,让你对C语言不再说难!
    【学习编程】有0.5倍速和2倍速的学习方法,那你看到过10倍速的学习技巧吗!
    外包程序员入职蚂蚁金服被质疑,网友评论人生污点,真就不拿外包当人了呗?
  • 原文地址:https://www.cnblogs.com/sharecorner/p/6119652.html
Copyright © 2011-2022 走看看