ID: 35634
User updated by: robert at interjinn dot com
Reported By: robert at interjinn dot com
-Status: Bogus
+Status: Open
Bug Type: Scripting Engine problem
Operating System: Linux
PHP Version: 5.1.1
New Comment:
I think this report should be given further consideration. I've read
the docs (not that I hadn't before), and I will assume you think this
is bogus because of the following int he PHP docs:
The following error types cannot be handled with
a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR,
E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and
most of E_STRICT raised in the file where
set_error_handler() is called.
However, the E_STRICT raised int he error handler script should not be
raised in the first place since it is PHP erroneous context that
believes the class declaration is being nested, when in fact the class
declaration is not being nested. If the include context was properly
scoped, then no E_STRICT would be raised and I wouldn't be having a
problem.
If this is not why this bug was marked bogus, please shed some light
for me, since the bogus comment was pretty uninformative (yes I know
you're busy and don't have time for 50 million bogus bugs but there's
only so much RTFM I can do and hope I can come across exactly what you
think makes this a bogus bug).
Cheers,
Rob.
Previous Comments:
------------------------------------------------------------------------
[2005-12-11 23:19:59] [EMAIL PROTECTED]
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php
------------------------------------------------------------------------
[2005-12-11 19:15:37] robert at interjinn dot com
Description:
------------
PHP bails out with class declaration nesting error when an error
handler dynamically loads an error handling class during a class
related E_STRICT warning.
Reproduce code:
---------------
test.php
<?php
set_error_handler( 'errorHandler' );
function errorHandler
( $errorNumber, $errorMessage, $fileName, $lineNumber )
{
require_once( 'errorClass.php' );
$error = new ErrorClass();
$error->handleException(
$errorNumber, $errorMessage, $fileName, $lineNumber );
}
require_once( 'testClass.php' );
$test = new TestClass();
?>
-------------------------------------------------
testClass.php
<?php
class TestClass
{
function __construct()
{
}
function TestClass()
{
$this->__construct();
}
}
?>
-------------------------------------------------
errorClass.php
<?php
class ErrorClass
{
function handleException
( $errorNumber, $errorMessage, $fileName, $lineNumber )
{
echo "Error: [$errorNumber] $errorMessage
($fileName:$lineNumber)\n";
}
}
?>
Expected result:
----------------
I expect to properly be able to handle the following E_STRICT in my
custom error class:
<br />
<b>Strict Standards</b>: Redefining already defined constructor for
class TestClass in <b>/home/suds/testClass.php</b> on line <b>9</b><br
/>
Actual result:
--------------
Fatal error: Class declarations may not be nested in
/home/suds/errorClass.php on line 4
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=35634&edit=1