#48311 [Opn]: Controlable object diposing

From: Date: Mon, 18 May 2009 22:13:11 +0000
Subject: #48311 [Opn]: Controlable object diposing
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-137466@lists.php.net to get a copy of this message
ID: 48311 User updated by: av3ng3r at gmail dot com Reported By: av3ng3r at gmail dot com Status: Open Bug Type: Feature/Change Request Operating System: - PHP Version: 6CVS-2009-05-17 (CVS) New Comment: I know that's a solution to cope with this. However code-wise it will be cleaner to let only live the reader variable of a certain scope. Previous Comments: ------------------------------------------------------------------------ [2009-05-18 12:25:35] a at b dot c dot de Your example would be handled by $reader = new StreamReader($stream); $reader->write('blahblahblah'); $reader = null; // $reader->__destruct() called Objects and values are destroyed as soon as the last reference to them goes away. Remove those references, destroy the object. $start = microtime(true); class foo{ private $name; function __construct($name) { $this->name = $name; } function __destruct() { echo $this->name." Destroyed at ".(microtime(true)-$GLOBALS['start'])." seconds\n"; } } $t1 = new foo('t1'); $t2 = new foo('t2'); $t3 = new foo('t3'); echo "Set \$t1 to null at ".(microtime(true)-$start)." seconds\n"; $t1 = null; echo "Sleep 5 seconds\n"; sleep(5); echo "Replace \$t2 with \$t3 at ".(microtime(true)-$start)." seconds\n"; $t2 = $t3; echo "Sleep 5 seconds\n"; sleep(5); ------------------------------------------------------------------------ [2009-05-17 16:50:23] av3ng3r at gmail dot com Description: ------------ An implementation like C# ( http://www.coderjournal.com/2007/02/proper-use-idisposable/ ) would be appreciated: using(StreamReader reader = new StreamReader(stream)) { reader.write('blalblabab'); } The class StreamReader implements an interface IDisposable, by implementing this interface (creating a function in the class called; Dispose) the user can use the statement using to control the disposal of the object manually instead of waiting of the garbage collection of PHP. This would be usefull for controling database connections, socket connections, simplexml?, etc. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=48311&edit=1

« previous php.bugs (#137466) next »