note 81116 rejected from language.oop5.decon by nlopess

From: Date: Thu, 14 Feb 2008 20:18:51 +0000
Subject: note 81116 rejected from language.oop5.decon by nlopess
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-136163@lists.php.net to get a copy of this message
Note Submitter: mrsol at gsm-travel dot com ---- Function __destruct is not executed by a call unset for a class. <?php class A{ public $parent_class; public function add_parent(&$class){ echo "Add parent class\n"; $this->parent_class = &$class; } public function __construct(){ echo "Construct Class A\n"; } public function __destruct(){ echo "Desctruct class A\n"; } } class B{ public $one_class; public function test(){ $this->one_class = new A; $this->one_class->add_parent(&$this); } public function __construct(){ echo "Construct Class B\n"; } public function __destruct(){ echo "Desctruct class B\n"; } } echo "init class B\n"; $test_cl = new B(); echo "run test func\n"; $test_cl->test(); echo "try unset B\n"; unset($test_cl); echo "now this class='".var_export($test_cl, true)."' \n"; echo "end script\n"; ?> Show -------------------- init class B Construct Class B run test func Construct Class A Add parent class try unset B now this class='NULL' end script Desctruct class B Desctruct class A -------------------- The lost class to which there is no access turns out? php -v PHP 5.2.1 (cli) (built: Nov 28 2007 23:14:55) Copyright (c) 1997-2007 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

« previous php.notes (#136163) next »