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] fel...@php.net So... Not a bug. ------------------------------------------------------------------------ [2010-10-16 17:07:32] fel...@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] fel...@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