建造后能function __construct()
自毁吗?
就像下面的伪代码一样,如果是,那么如何做到这一点:
function __construct() {
if($something) echo "OK!"
else __destruct();
}
建造后能function __construct()
自毁吗?
就像下面的伪代码一样,如果是,那么如何做到这一点:
function __construct() {
if($something) echo "OK!"
else __destruct();
}
Method__destruct
是 PHP 中的一个神奇方法,不能手动调用。
然而,它并没有真正发挥作用,方法的名称应该是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。
如果您使用 $test = new YourObject() 创建我们的 Object 的实例,那么当您立即销毁它时,将无法再将它的实例返回到 $test...
您始终可以使用条件来确定对象是否被构造:
if($something) {
$object = new Class();
}
如果您在构造函数中销毁对象,那么您可以达到您的要求,如下所示。
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;
在上面的例子中。在创建对象时,它将调用构造函数,然后构造函数通过未设置函数销毁自身,然后调用析构函数并且对象也被销毁。