#47439 [Bgs]: Strict errors don't always appear in CLI
| From: | johannes@php.net | Date: | Wed, 18 Feb 2009 18:22:02 +0000 |
| Subject: | #47439 [Bgs]: Strict errors don't always appear in CLI | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-133972@lists.php.net to get a copy of this message | ||
ID: 47439
Updated by: johannes@php.net
Reported By: tomek at realtsp dot com
Status: Bogus
Bug Type: Compile Warning
Operating System: FreeBSD 7.0, Ubuntu
PHP Version: 5.2.9RC2
New Comment:
Sometimes we don'T have all information while compiling and do late
binding at runtime, sometimes we have all information we need an can do
early binding at compile time.
Previous Comments:
------------------------------------------------------------------------
[2009-02-18 17:16:36] tomek at realtsp dot com
Fair enough, changing that setting does show them in both cases.
However, what's still not clear is why is it inconsistent depending on
the order of the class declarations? Surely it should just not appear at
all unless the php.ini settings are changed?
------------------------------------------------------------------------
[2009-02-18 17:08:18] johannes@php.net
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
The \"missing\" messages are created at compile time, but you\'Re
setting your error_reporting level at run-time. Please set error
reporting in php.ini to get all compile time messages
------------------------------------------------------------------------
[2009-02-18 16:34:43] tomek at realtsp dot com
Description:
------------
When running in CLI with strict errors enabled & display_errors turned
on, PHP does not produce all strict warnings reliably.
Some, like:
"Strict Standards: Non-static method b::init() should not be called
statically in /usr/home/tomek/test.php on line 25"
is 100% reproducible.
Others, like:
"Strict Standards: Declaration of b::init() should be compatible with
that of a::init() in /usr/home/tomek/test.php on line 8"
are not reproducible using the code attached. Swapping the class
declarations, however, makes the warning appear (ie. "class b extends a"
goes first, and only then define "class a").
Please note that this is the *only* change required for it to appear.
This is very similar to bug #46851.
Reproduce code:
---------------
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 'On');
ini_set('log_errors', 'Off');
class a
{
public function init($v) {}
}
class b extends a
{
public function init() {}
}
b::init();
Expected result:
----------------
Strict Standards: Declaration of b::init() should be compatible with
that of a::init() in /usr/home/tomek/test.php on line 8
Strict Standards: Non-static method b::init() should not be called
statically in /usr/home/tomek/test.php on line 19
Actual result:
--------------
Strict Standards: Non-static method b::init() should not be called
statically in /usr/home/tomek/test.php on line 19
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=47439&edit=1