Bug #63111 [Opn]: is_callable() lies for abstract static method

From: Date: Tue, 18 Sep 2012 15:57:05 +0000
Subject: Bug #63111 [Opn]: is_callable() lies for abstract static method
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-173540@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=63111&edit=1 ID: 63111 Updated by: laruence@php.net Reported by: vovan-ve at yandex dot ru Summary: is_callable() lies for abstract static method Status: Open Type: Bug Package: Class/Object related PHP Version: Irrelevant -Assigned To: +Assigned To: dmitry Block user comment: N Private report: N New Comment: hmm, dmitry could you please look at this? thanks Previous Comments: ------------------------------------------------------------------------ [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

« previous php.bugs (#173540) next »