| Newsgroups |
php.standards |
| Message-ID |
<[email protected]> |
Edit report at https://bugs.php.net/bug.php?id=76028&edit=1
ID: 76028
Comment by: [email protected]
Reported by: bburnichon at gmail dot com
Summary: call_user_func($a) and $a() behave differently
Status: Open
Type: Bug
Package: PHP Language Specification
Operating System: Linux
PHP Version: 5.6.33
Block user comment: N
Private report: N
New Comment:
Related: https://wiki.php.net/rfc/consistent_callables
Previous Comments:
------------------------------------------------------------------------
[2018-02-28 14:38:40] bburnichon at gmail dot com
Checked versions having the issue with 3v4l.org: https://3v4l.org/Ssgep
------------------------------------------------------------------------
[2018-02-28 14:33:43] bburnichon at gmail dot com
Description:
------------
A callable can be defined as an array containing class and method.
Calling call_user_func() with such an array has no issue.
If you try to use the array as a callable, then 'self' loose its special meaning and an error is triggered saying class self does not exists.
Test script:
---------------
<?php
class CallBySelf
{
public static function foo()
{
echo 'Foo', PHP_EOL;
}
public static function testCall()
{
$method = ['self', 'foo'];
var_dump(is_callable($method));
echo 'Call via call_user_func: ';
call_user_func($method);
echo 'Direct call: ';
$method();
}
}
CallBySelf::testCall();
Expected result:
----------------
Call via call_user_func: Foo
Direct call: Foo
Actual result:
--------------
bool(true)
Call via call_user_func: Foo
Direct call:
Fatal error: Class 'self' not found in /in/Ssgep on line 19
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=76028&edit=1