Edit report at http://bugs.php.net/bug.php?id=53081&edit=1
ID: 53081 Comment by: giorgio dot liscio at email dot it Reported by: giorgio dot liscio at email dot it Summary: why you should bring back abstract static methods Status: Bogus Type: Feature/Change Request Package: Class/Object related PHP Version: 5.3.3 Block user comment: N New Comment: simplified case abstract class AFSItem { public static function getIfValid ($fullPath) { // i use static::isValid to get the method defined in the called class if(static::isValid($fullPath)) return new static($fullPath); } protected function __construct ($fp){} // i want to force real classes to implement a way to check a path before instance an object protected abstract static function isValid ($fullPath); // abstract declaration } class File extends AFSItem { protected static function isValid ($fullPath) // implementation { return is_file($fullPath); } } class Dir extends AFSItem { protected static function isValid ($fullPath) // implementation { return is_dir($fullPath); } } class Image extends File { protected static function isValid ($fullPath) // implementation with override { if(parent::isValid($fullPath) AND (bool)getimagesize($fullPath)) return true; return false; } } Previous Comments: ------------------------------------------------------------------------ [2010-10-17 02:03:36] cmanley at xs4all dot nl This bug (emitting E_STRICT for abstract static methods in PHP 5.3 while static inheritance has finally been implemented) leads to another bug that I recently submitted: http://bugs.php.net/bug.php?id=53086 These are definately different bugs, but this bug spawns the other one which is more catestrophic. If you don't see the bug, then add E_STRICT to your error reporting: error_reporting(E_ALL | E_STRICT); ------------------------------------------------------------------------ [2010-10-16 20:23:31] giorgio dot liscio at email dot it Strict Standards: Static function cA::B() should not be abstract in ..\www\index.php on line 6 5.3.3 ------------------------------------------------------------------------ [2010-10-16 19:42:48] ras...@php.net Which strict warning do you get? I don't see one. ------------------------------------------------------------------------ [2010-10-16 19:39:13] giorgio dot liscio at email dot it so, felipe says that is not a bug and hes right rasmus you say that this code is correct, but i still get a strict warning abstract class cA { static function A(){static::B();} abstract static function B(); } class cB extends cA { static function B(){echo "ok";} } cB::A(); ------------------------------------------------------------------------ [2010-10-16 09:37:51] giorgio dot liscio at email dot it no more a change request http://bugs.php.net/bug.php?id=53082 bug reported thank you Rasmus! ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=53081 -- Edit this bug report at http://bugs.php.net/bug.php?id=53081&edit=1