call_user_func()函数,我跟他一样用,写了个例子,但是会出现warning错误,
call_user_func() expects parameter 1 to be a valid callback, no array or string given in /Users/xxx/workplace/test/aa.php
在网上也没有搜到它这种用法,求教?
call_user_func()函数,我跟他一样用,写了个例子,但是会出现warning错误,
call_user_func() expects parameter 1 to be a valid callback, no array or string given in /Users/xxx/workplace/test/aa.php
在网上也没有搜到它这种用法,求教?
例1:
function test() {
echo "hello test";
}
call_user_func(function(){
test();
});
//或者以字符串形式传入函数名
call_user_func("test");
碰到类中方法调用应该传入一个array
class Foo {
public function bar() {
echo "Hello bar!";
}
}
$obj = new Foo();
call_user_func(array($obj, "bar"));
那么再看一个例子
<?php
class Foo {
public static function getInitializer() {
return "hello";
}
}
function hello() {
echo "world!";
}
call_user_func(Foo::getInitializer());
如果将上面例子中return
改成echo
,就会出现你所描述的错误,而hello也会被输出。
而在composer的getInitializer
方法中返回的是个Closure
对象,自然也被call_user_func
所接受。
(PHP 4, PHP 5, PHP 7)
call_user_func — 把第一个参数作为回调函数调用
说明 ¶
mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。
这个和call_user_func_array函数是同胞函数,也可以研究一下
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答579 阅读✓ 已解决
789 阅读
getInitializer 方法返回的是一个Closure对象, 所以无问题; 你确定自己写的方法返回的类型是Callable 类型?