call_user_func()或$ callback()不起作用

时间:2014-01-27 18:29:14

标签: php function callback

在PHP路由文件中,我想回调一个名为homepage_display()的函数。

函数名称位于$callback变量中,当我进行调用时,它不起作用:

$callback = "homepage_display";

$callback(); // doesn't work
call_user_func($callback); // doesn't work either
homepage_display(); // works!!

虽然上面的这段特定代码可以在任何代码片段中使用,但同样的机制在我的一个函数中不起作用。什么可以导致这种行为?我尝试删除_认为它可能是编码问题,但它没有解决任何问题。

修改

为了清楚地说明我的观点,我在调用它作为回调函数之前添加了一个显式赋值$callback="homepage_display";。你可以在这张照片上看到它不起作用。而直接呼叫homepage_display();的确如此。如果有人理解某事,我很好奇:)

无效: Not working

工作: Working

2 个答案:

答案 0 :(得分:0)

在这里工作正常:

php > function foo() { echo 'foo!'; }
php > $bar = 'foo';
php > call_user_func($bar);
foo!
php > $bar();
foo!

您是否确认testRoute()实际返回true?如果没有,那么你的“自动加载器”永远不会被调用。

答案 1 :(得分:0)

答案一句话:namespace foo\bar;

在非全局命名空间的范围内,无法调用$callback();

一个人必须改为呼叫call_user_func(__NAMESPACE__.'\\'.$callback);

有时会变得棘手;)