Re: destructor not called for static members?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jochem Maas wrote:
Robert Janeczek wrote:

YaronKh@xxxxxxxxxxxxx wrote:

Hi It is an expected behavior because when you define a static variableit 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.



yes, but why destuctor isn`t called after all the execution is finished? i mean the moment when php does clean up before it finishes to process request?


oh boy this is tricky water, you might want to search the php-internals archive
for threads where this is discussed in some detail - in short:


don't expect anything to output at shut down time. and don't
rely on objects/resources existing if a dtor is called when php is cleaning up.
basically you can't rely on much at all in a dtor if you are letting php call
the dtor at 'shutdown' (sorry if my terminology is off rgd the termination
process of a php instance)



rash

Actually, my understanding of this is as follows:
a static variable is a "variable" (more like a constant) which is a part of a class (*not* an object!). Were it a normal member, it would be part of an object (and not just the class), and would be destroyed when the object was destroyed. However, you're using a *class* and not an *object*, so PHP will never call the destructor since it's not working with an object it can destroy.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux