Edit report at http://bugs.php.net/bug.php?id=53082&edit=1

 ID:                 53082
 Updated by:         fel...@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] 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

Reply via email to