#19519 [Opn->Csd]: Lost object variables during execution of a register_shutdown_function

From: Date: Sun, 06 Oct 2002 11:58:19 +0000
Subject: #19519 [Opn->Csd]: Lost object variables during execution of a register_shutdown_function
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-21629@lists.php.net to get a copy of this message
 ID:               19519
 User updated by:  natz@bluewin.ch
 Reported By:      natz@bluewin.ch
-Status:           Open
+Status:           Closed
 Bug Type:         Scripting Engine problem
 Operating System: Windows 2000
 PHP Version:      4.2.3
 New Comment:

sorry!!!

there is just a '&' needed:

$d = & new B('/path/to/logs/debugger.messages');


Previous Comments:
------------------------------------------------------------------------

[2002-09-20 04:20:21] natz@bluewin.ch

I'm running php4.2.3 on apache/1.3.24(w2k) as a module.

This are my two classes: (Explanations see below)

<?

class A {
	
	function init() {
		register_shutdown_function(array(&$this, 'flush'));	
	}
	
	function flush() {
		if(sizeof($this->logs) > 0) {
			/* Write it to a file */
		}
	}
}

class B extends A {

	function B($file) {
		$this->file = $file;
		$this->init();
	}
	
	function log($msg) {
		$this->logs[] = $msg;
	}
}

$d = new B('/path/to/logs/debugger.messages');

$d->log('text one');
$d->log('text ten');

?>

I would like to call the flush()-method on shutdown that the logs could
be written to file. So I register it in the init()-method with
register_shutdown_function(array(&$this, 'flush')) and the
init()-method is called from the constructor of class B.

I expected that the $this->logs array would be available and I could
write it to a file.

But the variable was always empty and the sizeof() returns 0. Do I call
the flush()-method manually at the end of the script, everything works
like expected. Every variable set in the constructor B(), like
$this->file, is available in the flush()-method called by the
registered shutdown function. Every variable set later does not exist.

Is that a bug? or just misscoding...

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=19519&edit=1



Thread (2 messages)

« previous php.bugs (#21629) next »