class MyDestructableClass {
function __construct() {
print "\nIn constructor\n";
$this->name = "MyDestructableClass";
}
function __destruct() {
print "\nDestroying " . $this->name . "\n";
}
}
$obj = new MyDestructableClass();
Cuando la secuencia de comandos se encuentra en un complejo entorno , la __destruct
no se llamará cuando exit
, pero no puedo reproducirlo easily.Have alguna vez alguien se dio cuenta de esto?¿Cuándo __destruct no se llamará en PHP?
EDITAR
voy a publicar todo el material aquí, es el entorno de pruebas de Symfony, que significa que puede reproducir fácilmente si está familiarizado con el marco:
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();
No relacionado con su pregunta, pero $ this-> name no es necesario; en su lugar, use la constante especial '__CLASS__' –
O get_class ($ this); – Beachhouse