随着面向对象编程的普遍扩张,许多有趣的问题,提出了面向对象的。相信很多新手
学习PHP面向对象的两个
函数,构造函数和析构函数,构造函数似乎更多的使用,是用更少的析构函数(相对于有限的编程经验的初学者)的
功能,被称为
创建构造函数。当对象。析构函数不被调用时,对象被销毁。
析构函数通常是由一些资源发布交易,如fopen()、Fclose()、imagecreatefromjepg(),和imagedestory()。这些
都是常见的例子,我们可以把它用作一个普通函数,当对象被破坏或
脚本被
执行时,它将被执行。
这么罗嗦,还是尽快为今天的主要问题:
< PHP
类测试{
公共功能__destruct(){
执行析构函数;
}
}
1美元=新的测试;
美元美元美元TEST2 = = 1试验;
unset(1美元);
;
这个脚本执行的结果是什么
在回答这个问题之前,回头看的话我明显。我们认为我们应该考虑
取消($ test1)在输出分频器,这样我们可以调用析构函数和输出
文本。至于美元美元后test2,test3脚本执行调用析构函数。也就是说,对一个文本的分割线,将输出,和两款将分割线下输出,这时,你可以在所有有点自豪,,当你知道如何调用析构函数。但这是真的吗我们可以看看执行的结果。
嘿,他喵,他是怎么输出一个句子的
事实上,我们忽略了一个重要的先决
条件,也就是说,
默认的对象是引用赋值,很多人没有注意到它,我希望初学者能更加注意它。
所以现在的
参考配置,与我们常见的变量的理解相结合,很快我们就认为三变量名指向同一个存储器
地址。所以在这种
情况下,尚未有什么
影响(1美元)破坏变量指向存储地址还是破坏存储在存储地址中的内容
了解取消使用()函数,请直观地跳过这一段。
想想这个鸡蛋的问题,它不像是去看手册。
同样是传递
参数,它是通过变量名指向存储地址的破坏。与通常的unset()函数,我们可以说,当多个变量名或一个对象的存储地址的名称,unset()函数只能是摧毁变量名称和地址储存,当只有一个变量名或对象的名称,未被指定的
内存地址的内容。
我们可以想像,实际存储的是
电视。许多人(多变量名或对象名)正在看电视。后撤消(),一个男人不看,左,和电视还开着。当只有一个人看电视,unset(),当人们离开,要关掉电视,即释放占用的存储
空间。如果你感兴趣,你也可以看看三的PHP函数的递归实现。
好了,回到主题。后撤消($ test1),原来的对象仍在。当输出分割线,执行脚本时,调用析构函数,因为只有一个对象,调用析构函数,只有一次。输出上面应该是合理的。
其他一些有趣的问题:有许多
方法来调用
程序中的一个析构函数。对象是否被
设置为空或假,剩余的物体仍然不受影响。这仍然是
不同于普通变量。(未固化的效果()函数是相同的),如果你有兴趣试试。
另一个尴尬的事情:我们都知道,构造函数可以使用__construct(),却忽略了同样的构造函数。那么,让我们看看吧。
最后,让我们看一个例子。
< PHP
*
*创建2009-11-18
*
*将此生成
文件的模板更改为
*窗的偏好- PHPEclipse PHP代码模板
* /
班级学生{
属性 私人捐款;
私有名称;
私人性别;
私人年龄;
私有静态值= 0;
功能__construct($ pname)
{
美元->名称= $ pname;
自我::$ + +;
}
__destruct()函数
{
自我数;
}
静态函数get_count()
{
返回自我;
}
}
美元=新学生(汤姆);
打印(学生::get_count());
美元=新学生(杰里);
打印(学生::get_count());
$ = null;
打印(学生::get_count());
$ = null;
打印(学生::get_count());
>
以上的代码段是PHP5析构函数的具体使用方法,希望对你有帮助。