Re: [PHP] __destruct() not called ! we shot us in the foot try the script
__destruct is called only when the object is detroyed. The object is destroyed only when there is no references to it. ?php error_reporting( E_ALL | E_STRICT ); header( 'Content-Type: text/plain' ); class Foo { function __destruct() { echo __METHOD__, PHP_EOL; } } $a = new Foo; $b = $a; # try the script without this line or commented unset( $a ); # no destructor called echo '--', PHP_EOL; unset( $b ); # destructor called! On Mon, Aug 24, 2009 at 8:40 PM, Ralph Deffke ralph_def...@yahoo.de wrote: well I would call this an error in the first view , and some of u where right! and the stuff with the refernce counter seems to be right as well. however I can't see a reason for it as 5.x works through refernces. so unsetting a REFERENCE to the object does not destroy it. How to destroy the object then? ?php abstract class a { public function __construct(){ echo constructingbr; } public function __destruct(){ echo destructingbr; } } class b extends a{ public function doSomething(){ echo I'm doing ...but the reference c to the object is unset()br; } } $c = new b(); $d = $c ; // works $f[] = $c ; // works class e { public static $m; public static function setM( $m ){ self::$m = $m; } } $o = new e(); e::setM( $c ); // works echo unsetting ...br; unset( $c ); $d-doSomething(); echo script ending now ...br; ? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- Martin Scotta
[PHP] __destruct() not called ! we shot us in the foot try the script
well I would call this an error in the first view , and some of u where right! and the stuff with the refernce counter seems to be right as well. however I can't see a reason for it as 5.x works through refernces. so unsetting a REFERENCE to the object does not destroy it. How to destroy the object then? ?php abstract class a { public function __construct(){ echo constructingbr; } public function __destruct(){ echo destructingbr; } } class b extends a{ public function doSomething(){ echo I'm doing ...but the reference c to the object is unset()br; } } $c = new b(); $d = $c ; // works $f[] = $c ; // works class e { public static $m; public static function setM( $m ){ self::$m = $m; } } $o = new e(); e::setM( $c ); // works echo unsetting ...br; unset( $c ); $d-doSomething(); echo script ending now ...br; ? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] __destruct() not called ! we shot us in the foot try the script
Ralph Deffke wrote: Sorry to bring it to this thread, but could you respond to Ashley in the [PHP] wierd behavior on parsing css with no php included thread. We would like the solution place in the archives to future visitor benefit. Thanks Jim -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php