Re: Destructor not called when extending SimpleXMLElement

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

 



On Mon, Jul 2, 2012 at 1:58 PM, Nick Chalk <nick@xxxxxxxxxxxxxxxx> wrote:
> Afternoon all.
>
> I seem to be having a little trouble with extending the
> SimpleXMLElement class. I would like to add a destructor to the
> subclass, but am finding that it is not called.
>
> Attached is a minimal demonstration of the problem. The XMLConfig
> class extends SimpleXMLElement, and its destructor is not called. The
> XMLConfig2 class, which does not use inheritance, does have its
> destructor called.
>
> The test platform is CentOS 6.2, with PHP version 5.3.3.
>
> What am I missing?
>
> Thanks for your help.
> Nick.


Hi Nick,

This is most likely a bug in PHP. A deconstructor is called when there
are no references left to the object. Since this class uses the libXML
library, it is likely that there are still references from the libXML
open on the object, which is why it will never be destroyed.
Anyway, you should report this bug to the PHP devs (at bugs.php.net).

If you really need this, it's probably best to create a class that
does not really extend SimpleXMLElement, but you create one inside the
constructor, and just forward all function calls to the
SimpleXMLElement object you've created in the constructor.

- Matijn

-- 
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