PHP对象销毁方式

析构函数:对象销毁时执行;注意在隐式销毁中是在是所有php代码执行完最后一行代码的时候才销毁

对象的销毁

  1. 显试销毁: 当对象没有被引用时就会被销毁,所以我们可以unset或为其赋值NULL;
  2. 隐试销毁:PHP是脚本语言,在代码执行完最后一行时,所有申请的内存都要释放掉.
Example:

';   
  }   
}   
$a = new Human();   
$b = $c = $d = $a;  
unset($a);    
echo $b->name; //输出张三
echo '
'; //先输出换行线再输出走了 析构函数是在线上触发还是线下触发? ?>

答案:

$b = $c = $d = $a;默认引用传值,四个变量指向同一处内存,unset的时候对象还是被其它三个变量使用,所以对象并没有被销毁,所以析构函数是在线下触发的(代码执行完了,内存自动释放)

Example2:

'; 
  } 
} 
$e = $f = $g = new Human(); 
unset($e); 
unset($f); 
unset($g); 
echo '
'; //同样的问题: 析构函数是在线上触发还是线下触发? ?>


在代码运行完自动释放内存之前由于对象已经没有被任何变量引用所以就自动释放了内存....答案是在线上触发



你可能感兴趣的:(PHP)