__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