我发现类似这样的代码:
function function_1($callback)
{
// not related code removed
$callback($p);
}
如何调用这个函数?我应该在$callback
参数中输入什么?
可以说,我想使用名为function_2($p)
.
这是您想要的完整解释,直接来自 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'));
}
}
运行:
function function_2()
{
echo 'done';
}
function function_1($callback)
{
// not related code removed
call_user_func($callback);
}
function_1("function_2");
function test($param)
{
}
function function_1($callback)
{
// not related code removed
$callback($p);
}
function_1("test")
在较旧的 php 版本中,您可以使用
function_1("function_2");
但在 php 5.3 中,你可以这样做
$function_2 = function($p) {
};
function_1($function_2);
如需进一步参考,请阅读PHP 手册中的匿名函数、回调和call_user_func。