is_callable() lies for abstract static method
| Bug #63111 | is_callable() lies for abstract static method | ||||
|---|---|---|---|---|---|
| Submitted: | 2012-09-18 15:07 UTC | Modified: | 2012-09-18 16:09 UTC | ||
| From: | vovan-ve at yandex dot ru | Assigned: | dmitry (profile) | ||
| Status: | Closed | Package: | Class/Object related | ||
| PHP Version: | Irrelevant | OS: | |||
| Private report: | No | CVE-ID: | None | ||
[2012-09-18 15:07 UTC] 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
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2012-09-18 15:57 UTC] laruence@php.net
[2012-09-21 11:17 UTC] dmitry@php.net
-Status: Assigned +Status: Closed