Hello Marcus,
Hum... you fixed the issue but not really in the way I expected it. Now my code does
not work...
My message was not only to report a bug, but to ask *not* to fix it as expected.
Particularly to put the "trace" member as protected, (or "getTrace()" as virtual and
not final).
Remember my code:
<?
class SystemException extends Exception {
function __construct($message, $code) {
parent::__construct($message, $code);
// Hide trace of handler() call.
array_splice($this->trace, 0, 1);
$this->file = $this->trace[0]['file'];
$this->line = $this->trace[0]['line'];
}
static function handler($code, $message) {
throw new SystemException($message, $code);
}
}
set_error_handler(array('SystemException', 'handler'));
?>
Indeed, I'm no more able to modify the trace, so if I want to report the real file and
line (I mean the interresting ones, so those in trace[1]), they won't be coherent with
the back trace.
Why could you accept a derived class to modify "file" and "line" members, and not the
"trace" one?
My original message was also to limit the use of private and final modifiers, as they
go against inheritance.
Regards,
Stephane
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php