Edit report at http://bugs.php.net/bug.php?id=53082&edit=1
ID: 53082
Comment by: cmanley at xs4all dot nl
Reported by: giorgio dot liscio at email dot it
Summary: unexp. warning with abstract static methods used
inside another file
Status: Bogus
Type: Bug
Package: Scripting Engine problem
PHP Version: 5.3.3
Block user comment: N
New Comment:
If it doesn't work as expected then it's either a bug or poor design in
PHP.
Either way it should be fixed. People put effort into reporting bugs, so
it's rude
to flag them as bogus (to make them go away) without putting much
thought into
them.
Previous Comments:
------------------------------------------------------------------------
[2010-10-16 17:22:00] [email protected]
So... Not a bug.
------------------------------------------------------------------------
[2010-10-16 17:07:32] [email protected]
This is because when the code is in another file, the error is triggered
in runtime, and when it is in the same file, it is triggered in
compile-time, so EG(error_reporting) has the default value (E_ALL &
~E_NOTICE & ~E_STRICT & ~E_DEPRECATED).
------------------------------------------------------------------------
[2010-10-16 16:34:33] [email protected]
The namespace is not a factor, but the require yes.
Internally the php_error_cb() function is called for both cases, but
just displays when the code is in another file because
EG(error_reporting) is set to 'E_ALL | E_STRICT', when it's in the same
file, EG(error_reporting) is 22519.
------------------------------------------------------------------------
[2010-10-16 09:36:52] giorgio dot liscio at email dot it
Description:
------------
without namespace works perfectly:
<?php
// index.php
ini_set("display_errors", true);
ini_set("error_reporting", E_ALL | E_STRICT);
abstract class AbstractFileSystemItem
{
abstract static function ensurePathIsValid($fullPath);
}
class Dir extends AbstractFileSystemItem
{
static function ensurePathIsValid($fullPath){}
}
?>
--------------------------------------------------------
with namespace and require: (test the two files)
gives unexpected warning
Static function AbstractFileSystemItem::ensurePathIsValid() should not
be abstract
<?php
// index.php (run this)
ini_set("display_errors", true);
ini_set("error_reporting", E_ALL | E_STRICT);
require("FSNuovo/Directory.php");
?>
<?php
// FSNuovo/Directory.php
namespace FSNuovo;
abstract class AbstractFileSystemItem
{
abstract static function ensurePathIsValid($fullPath);
}
class Dir extends AbstractFileSystemItem
{
static function ensurePathIsValid($fullPath){}
}
?>
original discussion: http://bugs.php.net/bug.php?id=53081
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=53082&edit=1