PHP之析构方法学习笔记

Posted ChotocateCat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP之析构方法学习笔记相关的知识,希望对你有一定的参考价值。

__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:析构方法不是销毁对象本身的,而是用来关闭资源连接的。

 

以上是关于PHP之析构方法学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

python 3.x 学习笔记10 (析构函数and继承)

13 PHP 对象基础 属性 方法 静态属性方法 this self 构造方法 学习 析构方法

C++之各类特殊成员

学习笔记:python3,代码片段(2017)

PHP之:析构函数

PHP必用代码片段