在变量中存储回调函数会产生错误

时间:2014-06-10 14:09:02

标签: php

我正在研究这本书"编程PHP第3版",我想到了这些代码:

$callback = function myCallbackFunction()
{
echo "callback achieved";

} call_user_func($callback);

但是,当我尝试运行它时,我收到以下错误:

syntax error, unexpected 'myCallbackFunction' (T_STRING), expecting'('

我做错了吗?代码不正确吗?
这是我的PHP版本:

% php -v                                                                                                                  255 ↵
PHP 5.4.19 (cli) (built: Sep 18 2013 14:26:26)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with XCache v2.0.1, Copyright (c) 2005-2012, by mOo
    with the ionCube PHP Loader v4.5.2, Copyright (c) 2002-2014, by ionCube Ltd.

3 个答案:

答案 0 :(得分:2)

匿名函数没有函数名。这就是为什么他们被称为匿名。定义应如下所示:

$callback = function ()
{
    echo "callback achieved";
};

call_user_func($callback);

答案 1 :(得分:0)

您可以定义anonymous功能或non-anonymous.

要定义一个令人讨厌的东西,你有什么想要做的,你不应该在参数列表()

之前加上一个名字
$callback = function()
{
echo "callback achieved";

};
call_user_func($callback);

答案 2 :(得分:0)

看起来你正在尝试创建一个匿名函数。

$callback = function()
{
    echo "callback achieved";
}

call_user_func($callback);

尝试删除功能名称。

如果您尝试调用现有函数,则可以这样执行:

function myCallbackFunction()
{
    echo "callback achieved";
}

call_user_func('myCallbackFunction');