<?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的析构方法,如何才可以触发
unset(self::$test);