3

我发现类似这样的代码:

function function_1($callback) 
{
    // not related code removed

    $callback($p);

}

如何调用这个函数?我应该在$callback参数中输入什么?

可以说,我想使用名为function_2($p).

4

4 回答 4

4

这是您想要的完整解释,直接来自 php 文档:Callbacks

如果您使用的是 php 5.3+,则可以传递一个 lambda(又名匿名函数):

<?php function_1(function ($p) { ... });

如果需要支持以前版本的 php,则需要定义一个常规函数或实例方法。由于您显示的代码使用$callback()而不是call_user_func($callback),因此您不需要它。

<?php

// without a class
function function_2 ($p) { ... }
function_1('function_2');

// with a class
class A {
    public function function_2 ($p) { ... }

    public function doIt () {
        function_1(array($this, 'function_2'));
    }
}
于 2013-07-27T18:56:42.503 回答
1

运行:

function function_2() 
{
    echo 'done';

}


function function_1($callback) 
{
    // not related code removed

    call_user_func($callback);

}

function_1("function_2");
于 2013-07-27T18:55:06.630 回答
0
function test($param)
{
}

function function_1($callback) 
{
    // not related code removed

    $callback($p);

}

function_1("test")
于 2013-07-27T18:52:34.563 回答
0

在较旧的 php 版本中,您可以使用

function_1("function_2");

但在 php 5.3 中,你可以这样做

$function_2 = function($p) {
};

function_1($function_2);

如需进一步参考,请阅读PHP 手册中的匿名函数回调call_user_func

于 2013-07-27T18:52:44.780 回答