0

建造后能function __construct()自毁吗?

就像下面的伪代码一样,如果是,那么如何做到这一点:

function __construct() {
  if($something) echo "OK!"
  else __destruct();

}

4

4 回答 4

4

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。

于 2013-09-01T18:39:49.703 回答
0

如果您使用 $test = new YourObject() 创建我们的 Object 的实例,那么当您立即销毁它时,将无法再将它的实例返回到 $test...

于 2013-09-01T18:47:29.913 回答
0

您始终可以使用条件来确定对象是否被构造:

   if($something) {
   $object = new Class();
   }
于 2013-09-01T18:49:17.080 回答
-1

如果您在构造函数中销毁对象,那么您可以达到您的要求,如下所示。

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;

在上面的例子中。在创建对象时,它将调用构造函数,然后构造函数通过未设置函数销毁自身,然后调用析构函数并且对象也被销毁。

于 2016-07-08T07:23:51.580 回答