施工后function __construct()
可以自毁吗?
与下面的伪代码类似,如果是,则执行此操作:
function __construct() {
if($something) echo "OK!"
else __destruct();
}
答案 0 :(得分:4)
方法__destruct
是PHP中的一种神奇方法,不能手动调用。
Hovewer它没有做任何真正的魔术,方法的名称应该类似onDestructed
左右,就像事件监听器一样。
因此,当没有对该对象的引用时,将调用__destruct
。方法的实现可以如下:
function __destruct(){
echo "An object of class " . __CLASS__ . " has been destroyed " ;
}
要回答你的问题,是的,它可以被显式调用,你只需执行方法__destruct
中的代码,但你不会销毁该对象(除非你在其中做一些真正的垃圾收集)
function __construct($something) {
if($something)
echo "OK!" ;
else
$this->__destruct(); // $this-> must be used here!
}
要销毁它,您可以使用unset($object)
或在某些情况下将其设置为null。
答案 1 :(得分:0)
如果使用$ test = new YourObject()创建Object的实例,那么当你立即破坏它时,就不可能将它的实例返回到$ test中......
答案 2 :(得分:0)
您始终可以使用条件来确定对象是否构造完成:
if($something) {
$object = new Class();
}
答案 3 :(得分:0)
如果你在构造函数中销毁对象,那么你可以像下面那样实现你的需求。
class class1
{
function __construct()
{
print "constructor\n";
print "Now destructor going to call\n";
unset($this);
}
function __destruct()
{
print "this is destructor\n";
}
}
$obj=new class1;
在上面的例子中。 在创建对象时,它将调用构造函数然后构造函数 函数通过unset函数销毁自己然后析构函数调用和 对象也被破坏了。