> <?php > class c1 { > public function __destruct() { > echo '__destruct'; > } > } > > class c2 { > private static $_ref; > > public function __construct() { > self::$_ref = new c1(); > > //$this->_ref = new c1(); > } > } > > $obj = new c2(); > unset($obj); > ?> > > i thought this should display __destruct in both cases from > c2::__construct, but only the one with non static access seems to call > c1::destruct. and if i remove unsetting $obj from the end of code this > one also doesn`t work. is it expected behaviour? or maybe when > __destructor is called after script finishes execution than output is no > longer possible? i tried also send some information to file and this > also didn`t work. help please :) Another take on this: PHP can't destroy $_ref until the entire script, even with aute_append files, is completely done and gone, because you *MIGHT* make another c2() somewhere. It's quite likely that your c1 *IS* getting destroyed, but long after any output you can see, because STDOUT and STDERR are already shut down. Change your echo statements to do an error_log() and you just might see more things going on "behind the scenes" -- No promise though. PHP might not be calling the destructors at that point, as a general script cleanup might just be free()-ing big chunks of RAM instead of doing a full descructor call. -- Like Music? http://l-i-e.com/artists.htm -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php