class MyDestructableClass {
function __construct() {
print "\nIn constructor\n";
$this->name = "MyDestructableClass";
}
function __destruct() {
print "\nDestroying " . $this->name . "\n";
}
}
$obj = new MyDestructableClass();
Когда выше сценарий в сложной среде, __destruct
не будет вызван когда exit
, но я не могу воспроизвести это easily.Have кто-нибудь это заметил?Когда __destruct не будет вызываться в PHP?
EDIT
Я выложу весь материал здесь, это тестирование среды Symfony, что означает, что вы можете легко воспроизвести его, если вы познакомились со структурой:
require_once dirname(__FILE__).'/../bootstrap/Doctrine.php';
$profiler = new Doctrine_Connection_Profiler();
$conn = Doctrine_Manager::connection();
$conn->setListener($profiler);
$t = new lime_test(0, new lime_output_color());
class MyDestructableClass {
function __construct() {
print "\nIn constructor\n";
$this->name = "MyDestructableClass";
}
function __destruct() {
print "\nDestroying " . $this->name . "\n";
}
}
$obj = new MyDestructableClass();
$news = new News();
$news->setUrl('http://test');
$news->setHash('http://test');
$news->setTitle('http://test');
$news->setSummarize('http://test');
$news->setAccountId(1);
$news->setCategoryId(1);
$news->setThumbnail('http://test');
$news->setCreatedAt(date('Y-m-d H:i:s',time()));
$news->setUpdatedAt(date('Y-m-d H:i:s',time()));
$news->save();
exit();
Не связано с вашим вопросом, но $ this-> name не нужно - вместо этого используйте специальную константу '__CLASS__' –
Или get_class ($ this); – Beachhouse