|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-09-17 15:28 UTC] paul dot liversidge at recycledpixels dot com
Description:
------------
I set the error handler to point at a class/method and then change some of the class variables. Debugging lines and method confirm the class variable has occurred. When I then trigger an error by echo'ing an uninitialized variable the error handler resets or reinstantiates the class.
If $use_me is initialized in the constructor instead of being defined as a 'constant', it makes no difference as the value at the time of an error is NULL, whatever is defined in the core class code.
If the set_error_handler function is called from line 3, i.e. set_error_handler (array (&$err, 'handler_error')), it all works fine.
Reproduce code:
---------------
<?
$err = new ErrorHandler;
$err->use_me = true;
echo ("[1:{$err->use_me}]");
$err->test ();
echo $fred;
class ErrorHandler {
var $use_me = 4;
function ErrorHandler () {
set_error_handler (array (&$this, 'handle_error'));
}
function test () {
echo ("[2:{$this->use_me}]");
}
function handle_error ($number, $message, $file, $line, $context) {
echo ("[3:{$this->use_me}]");
echo ("Error $number");
}
}
?>
Expected result:
----------------
[1:1][2:1][3:1]Error 8
Actual result:
--------------
[1:1][2:1][3:4]Error 8
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 10:00:01 2025 UTC |
If I add a new method to the class, activate (see below), remove the constructor method and call this new function immediately after instantiating the class, i.e. $err->activate (); it all works fine as well. function activate () { $this->old_error_handler = set_error_handler (array (&$this, 'handle_error')); } It seems to be something related to setting the error handler in the constructor method.