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

Reply via email to