ID: 27555 Comment by: phpbugs at dubr dot com Reported By: jaanus at heeringson dot com Status: No Feedback Bug Type: Documentation problem Operating System: Linux 2.4.24 PHP Version: 5CVS-2004-03-10 (dev) Assigned To: helly New Comment:
Why is this being considered a documentation bug? It clearly is a PHP bug and needs to be fixed. Previous Comments: ------------------------------------------------------------------------ [2005-10-05 10:24:39] richard dot quadling at bandvulc dot co dot uk One of the real issues here is that the destruction of objects created by the user is not in a logically sequence. Having to manually free objects is sort of correct as relying on automated clearing/garbage collection can only, at best, guess the order in which things should be destroyed. So, assuming somehow there was a way to determine the order of destruction, what happens when you have object interdependance. Say, linking SESSION and DB. DB needs session details to know what the user is, but SESSION needs DB to update status of user. If you DON'T use __desrtuct() at all and use normal methods you HAVE to decide which goes first (which is a better choice than letting the system guess), but requires more work. I don't think there is an easy solution. Richard. ------------------------------------------------------------------------ [2005-10-04 23:59:04] iquito at gmx dot ch I agree, this behaviour makes no sense at all and has to be classified as a bug. Of what use is a shutdown-function, if everything has already been shut down beforehand? Especially the connection to the database is normally very important for everything. I use the register_shutdown-function to destruct all my classes in the correct order at the end of the script, so I don't have to rely on PHP to kill them in the correct order. This makes a lot of sense if you don't know where your script will end exactly. ------------------------------------------------------------------------ [2005-07-24 08:24:43] jasper at bryant-greene dot name This is definitely a bug, and needs to be fixed. As has been mentioned before, all user-definable methods need to have all resources available to them, including the session module, mysqli module, etc. Rather than just saying "the destructor is called too late in the shutdown process" and leaving it at that, why not fix it? ------------------------------------------------------------------------ [2005-07-07 09:12:56] richard dot quadling at bandvulc dot co dot uk As classes are instatiated by a user, their destructing should be within the users control OR at least before the script terminates and module "tidying-up" takes place. I think this is actually a PHP bug. ------------------------------------------------------------------------ [2005-07-07 07:47:35] aristotle at brettia dot com I have a legitimate reason for wanting __destruct methods to be called before the session module is finalized. I have a session wrapper class that uses an internal array to keep session data separate from $_SESSION until the destruction of the class. The class' __destruct method is supposed to copy its internal array back to $_SESSION so that it can be saved. This is not possible with the current order. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/27555 -- Edit this bug report at http://bugs.php.net/?id=27555&edit=1