3
我有一個存儲在PHP數組中的Client類對象的數組。有時我需要unset()
其中一個對象在數組中,我不想擔心顯式關閉套接字連接。我想__destruct()
爲我做到這一點。在類對象數組中取消設置類對象調用所有類對象的類型?
class A{
private $id;
public function __construct($id){
$this->id = $id;
}
public function __destruct(){
echo "Calling destruct on " . $this->id . ".\n";
}
}
$array = array();
for($i=0;$i<5;$i++){
$array[$i] = new A($i);
}
unset($array[3]);
print_r($array);
析構函數被解僱,因爲它應該爲我們銷燬的元素。但是,即使元素沒有被銷燬,數組中的其他析構函數也會被調用。爲什麼?
Calling destruct on 3.
Array
(
[0] => A Object
(
[id:A:private] => 0
)
[1] => A Object
(
[id:A:private] => 1
)
[2] => A Object
(
[id:A:private] => 2
)
[4] => A Object
(
[id:A:private] => 4
)
)
Calling destruct on 0.
Calling destruct on 1.
Calling destruct on 2.
Calling destruct on 4.
爲什麼會發生這種情況,我有什麼替代方案?
因爲腳本結束了,所以會調用destruct。得到它 – nick
這也可以做到。 :)我不確定這是否是劇本的結尾。 – jimp
是的,但這是一個守護進程..它永遠不會結束:) – nick