Bug #53082 [Ver->Bgs]: unexp. warning with abstract static methods used inside another file
Edit report at http://bugs.php.net/bug.php?id=53082&edit=1
ID: 53082
Updated by: felipe@php.net
Reported by: giorgio dot liscio at email dot it
Summary: unexp. warning with abstract static methods used
inside another file
-Status: Verified
+Status: Bogus
Type: Bug
Package: Scripting Engine problem
PHP Version: 5.3.3
Block user comment: N
New Comment:
So... Not a bug.
Previous Comments:
------------------------------------------------------------------------
[2010-10-16 17:07:32] felipe@php.net
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] felipe@php.net
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
Thread (6 messages)