Edit report at https://bugs.php.net/bug.php?id=63111&edit=1
ID: 63111 Updated by: dmi...@php.net Reported by: vovan-ve at yandex dot ru Summary: is_callable() lies for abstract static method -Status: Assigned +Status: Closed Type: Bug Package: Class/Object related PHP Version: Irrelevant Assigned To: dmitry Block user comment: N Private report: N New Comment: Automatic comment on behalf of dmi...@zend.com Revision: http://git.php.net/?p=php-src.git;a=commit;h=4db74b7f1981bf19805e815f983c50d93df2c26a Log: Fixed bug #63111 (is_callable() lies for abstract static method) Previous Comments: ------------------------------------------------------------------------ [2012-09-18 16:09:13] larue...@php.net seems similar with #36635 ------------------------------------------------------------------------ [2012-09-18 15:57:05] larue...@php.net hmm, dmitry could you please look at this? thanks ------------------------------------------------------------------------ [2012-09-18 15:07:48] vovan-ve at yandex dot ru Description: ------------ The function is_callable() says, that abstract static method _IS_ callable. But it is abstract, it has no body. abstract class Foo { abstract static function bar(); } # PHP Strict Standards: Static function Foo::bar() should not be abstract # is Foo::bar() callable? var_dump( is_callable(array("Foo", "bar")) ); # bool(true) # O_o Ok, let's try... Foo::bar(); # Fatal error: Cannot call abstract method Foo::bar() Yes, I see a Strict. Anyway, is_callable() lies. I have checked this in 5.3.10, 5.3.6 and 5.2.17. Test script: --------------- abstract class Foo { abstract static function bar(); } var_dump( is_callable(array("Foo", "bar")) ); Foo::bar(); Expected result: ---------------- bool(false) Fatal error Actual result: -------------- bool(true) Fatal error ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=63111&edit=1