RE: [PHP] destructor not called for static members?
| From: | YaronKh at clalit dot org dot il | Date: | Thu, 10 Mar 2005 11:38:35 +0000 |
| Subject: | RE: [PHP] destructor not called for static members? | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-210426@lists.php.net to get a copy of this message | ||
Hi
It is an expected behavior because when you define a static variable it is shared by all objects of
the same class. If When you unset one object and the destruct of the static object will be called,
all the other objects will lose the static var as well.
Hope I've helped
yaron
-----Original Message-----
From: Robert Janeczek [mailto:rashid@ds.pg.gda.pl]
Sent: Thursday, March 10, 2005 1:28 PM
To: php-general@lists.php.net
Subject: [PHP] destructor not called for static members?
am i missing something or destructor isn`t called for objects that are
assigned to static fields in other objects? here is some example code:
<?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 :)
php 5.0.3
rash
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php