易截截图软件、单文件、免安装、纯绿色、仅160KB

PHP类实例教程(七):析构函数与PHP的垃圾回收

析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。
GC(Garbage Collector)
在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁。这是PHP的GC(Garbage Collector)垃圾处理机制,防止内存溢出。当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中的所有对象同样被销毁。
__destruct() 析构函数,是在垃圾对象被回收时执行。
析构函数也可以被显式调用,但不要这样去做。
析构函数是由系统自动调用的,不要在程序中调用一个对象的析构函数。
析构函数不能带有参数。
程序结束前,所有对象被销毁。析构函数被调用了。
<?php
class Person{
public function __destruct() {
echo "<br>析构函数在这里执行";
echo "<br>这里一般用来放置,关闭数据库,关闭文件等等收尾工作。";
}
}
$p = new Person();
for ($i = 0; $i < 5; $i++) {
echo "<br /> $i";
}
//我们在这里看到,在PHP程序结束前,对象被销毁了。
?>
当对象没有指向时,对象被销毁。
<?php
class Person {
public function __destruct() {
echo "<br>析构函数在这里执行";
echo "<br>这里一般用来放置,关闭数据库,关闭文件等等收尾工作。";
}
}
$p = new Person();
$p = null;
//我们在这里看到,析构函数在这里被执行了。
for ($i = 0; $i < 5; $i++) {
echo "<br> $i";
}
?>

我们将$p设置为空或者第11行赋予$p一个字符串,这样$p之前指向的对象就成为了垃圾对象。PHP将这个对象垃圾销毁。
unset变量
<?php
class Person {
public function __destruct() {
echo "<br>析构函数在这里执行<br>";
}
}
$p = new Person();
$p1 = $p;//设定新引用变量$p1也指向这个对象
unset($p);
echo "是否看到\$p被销毁,对象也被销毁呢?";
for ($i = 0; $i < 5; $i++) {
echo "<br> $i";
}
unset($p1);
echo "我们看到这里,析构函数被执行了";
?>
unset一个引用变量时,unset 销毁的是指向对象的变量,而不是这个对象。


相关文档:

研究了一下如何开发php扩展

我的gentoo系统flash无法显示中文字体,而且无法睡眠和待机,有功夫再研究一下如何解决吧
因为要开发一个富文本过滤的php扩展,因此研究了一下php扩展的开发技术。
php.net上的文档写的不全。还要到处找。
关于富文本过滤,就是说给一段混杂了html,js,css的文本,过滤出安全的部分,因此要做html,css解析,黑白名单设计 ......

【PHP】选择题题库系统V1.0

这个系统其实是练习php基本语法和MySQL的基本查询语句。给一起学习的朋友分享。 ^_^
在php文件中,双斜杠后面是注释语句,我用英文写的注释。
整个系统所包含的.htm和.php文件有:
add_que.htm——添加新题的页面
insert.php——显示添加新题信息的页面
questionlist.php——所有问题列 ......

收藏PHP常用函数收集

<?
function GetIP() { //获取IP
if ($_SERVER["HTTP_X_FORWARDED_FOR"])
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if ($_SERVER["HTTP_CLIENT_IP"])
$ip = $_SERVER["HTTP_CLIENT_IP"];
else if ($_SERVER["REMOTE_ADDR"])
$ip = $_SERVER["REMOTE_ADDR"];
......

PHP编码问题

老声长谈,着是困惑很多人的问题,如果处理不好,都是乱码,说这些话并不是我对编码很精通,只是在这方面是得留神,自己总结了一点小经验(容易出现乱码的地方有php文件里面,数据库里面,页面显示):
1.在于数据打交道的时候mysql_query("set names 'utf-8'");
2.在建数据库的时候,尤其是用phpMyAdmin与MYSQL打交道时候, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号