【发布时间】:2014-02-03 14:58:59
【问题描述】:
正如php手册所说的
- call_user_func — 调用第一个参数给出的回调
混合 call_user_func ( 可调用 $callback [, 混合 $parameter [, 混合 $...]])
- 调用第一个参数给定的回调并将其余参数作为参数传递。
我开始测试这个功能:
- 函数必须是可调用的
示例 1:
<?php
function my_callback_function() {
echo 'hello world!';
}
call_user_func('my_callback_function');
?>
示例 1 返回 true。 Bur第二个参数($parameter)呢?
示例 2:
namespace Test;
class Foo
{
static public function bar()
{
echo "Hello world!\n";
}
}
call_user_func(__NAMESPACE__ . '\Foo::bar'); // true
call_user_func(array(__NAMESPACE__ . '\Foo', 'bar')); // true
call_user_func('Test\Foo::bar'); // false <error>
在这个例子中,我省略了第二个参数,他返回 TRUE。
示例 3:
class Foo
{
public function bar()
{
echo "Hello world";
}
}
if (is_callable(array('foo', 'bar'))) {
call_user_func(array('foo', 'bar'));
}
我很困惑,因为文档说“调用第一个参数给出的回调”
上面的所有函数示例都没有任何参数,但文档说他返回第一个参数。如果该参数不存在,如何返回?
【问题讨论】:
-
文档表示
call_user_func的第一个参数不是您实际调用的函数。所以第一个参数是被调用的函数名。也不是更灵活的call_user_func_array
标签: php