Reply to RE: [PHP] destructor not called for static members?

Your name:

Reply:


Posted by Richard Lynch on 10/04/62 11:10

> <?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 :)

Another take on this:

PHP can't destroy $_ref until the entire script, even with aute_append
files, is completely done and gone, because you *MIGHT* make another c2()
somewhere.

It's quite likely that your c1 *IS* getting destroyed, but long after any
output you can see, because STDOUT and STDERR are already shut down.

Change your echo statements to do an error_log() and you just might see
more things going on "behind the scenes" -- No promise though. PHP
might not be calling the destructors at that point, as a general script
cleanup might just be free()-ing big chunks of RAM instead of doing a full
descructor call.

--
Like Music?
http://l-i-e.com/artists.htm

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация