PHP 静态属性和析构

<?php 

class test{
    public function __construct(){
        var_dump('start test');
    }
    public function __destruct()
    {
        var_dump('end test');
    }
}

class t {
    static $test=null;
    public static function tt(){
        self::$test=new test();
        return self::$test;
    }
    public static function tts(){
        self::$test=null;
    }
}

class test1{
    static $instatn=null;
    static $test1=null;
    public function __construct(){
       var_dump('start test1');
    }
    public static function instance()
    {
        if (empty(self::$instatn)){
            self::$instatn=new static();
        }
        self::$test1= t::tt();
        
        var_dump(self::$test1);
        return self::$instatn;
    }
    public static function tt(){

    }

    public function tts(){
        t::tts();
    }
    public function __destruct()
    {
        var_dump('end test1');
    }
}

$t=test1::instance();
$t->tts();

unset($t);
sleep(5);
var_dump('------------------end sleep--------------------------');

上述代码会输出

string(11) "start test1"
string(10) "start test"
object(test)#2 (0) {
}
string(53) "------------------end sleep--------------------------"
string(9) "end test1"
string(8) "end test"

$t=test1::instance();这里创建了test类
$t->tts();这里销毁了test类,不是应该马上触发test的析构方法么

为什么没有触发test的析构方法,如何才可以触发

阅读 1.9k
1 个回答

unset(self::$test);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题