Bug #53082 [Ver->Bgs]: unexp. warning with abstract static methods used inside another file

From: Date: Sat, 16 Oct 2010 15:22:02 +0000
Subject: Bug #53082 [Ver->Bgs]: unexp. warning with abstract static methods used inside another file
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-155248@lists.php.net to get a copy of this message
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)

« previous php.bugs (#155248) next »