>백엔드 개발 >PHP 튜토리얼 >PHP 소멸자와 가비지 수집 메커니즘

PHP 소멸자와 가비지 수집 메커니즘

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

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

  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 < 5; $i ) {
  11. echo "
    $i";
  12. }
  13. ?>
复制代码

将$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 < 5; $i ) {
  11. echo "
    $i";
  12. }
  13. unset($p1);
  14. echo "我们看到这里,析构函数被执行了";
  15. ?>
复制代码

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



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.