Edit report at https://bugs.php.net/bug.php?id=63111&edit=1
ID: 63111 Updated by: larue...@php.net Reported by: vovan-ve at yandex dot ru Summary: is_callable() lies for abstract static method Status: Assigned Type: Bug Package: Class/Object related PHP Version: Irrelevant Assigned To: dmitry Block user comment: N Private report: N New Comment: seems similar with #36635 Previous Comments: ------------------------------------------------------------------------ [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