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