Heim  >  Artikel  >  Backend-Entwicklung  >  php析构函数与垃圾回收机制

php析构函数与垃圾回收机制

WBOY
WBOYOriginal
2016-07-25 08:53:50770Durchsuche
  1. class person{
  2. public function __destruct() {
  3. echo "
    析构函数在这里执行";
  4. echo "
    这里一般用来放置,关闭数据库,关闭文件等等收尾工作。";
  5. }
  6. }
  7. $p = new person();
  8. for ($i = 0; $i echo "
    $i";
  9. }
  10. //在php程序结束前,对象被销毁了。
  11. ?>
复制代码

当对象没有指向时,对象被销毁。

  1. class person {
  2. public function __destruct() {
  3. echo "
    析构函数在这里执行";
  4. echo "
    这里一般用来放置,关闭数据库,关闭文件等等收尾工作。";
  5. }
  6. }
  7. $p = new person();
  8. $p = null;
  9. //我们在这里看到,析构函数在这里被执行了。
  10. for ($i = 0; $i echo "
    $i";
  11. }
  12. ?>
复制代码

将$p设置为空或者第11行赋予$p一个字符串,这样$p之前指向的对象就成为了垃圾对象。 php将这个对象垃圾销毁。

unset变量

  1. class person {
  2. public function __destruct() {
  3. echo "
    析构函数在这里执行
    ";
  4. }
  5. }
  6. $p = new person();
  7. $p1 = $p; //设定新引用变量$p1也指向这个对象
  8. unset($p);
  9. echo "是否看到/$p被销毁,对象也被销毁呢?";
  10. for ($i = 0; $i echo "
    $i";
  11. }
  12. unset($p1);
  13. echo "我们看到这里,析构函数被执行了";
  14. ?>
复制代码

unset一个引用变量时,unset 销毁的是指向对象的变量,而不是这个对象。



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn