php中带有未定义参数的回调函数和匿名函数
如何使用参数数量未定义的回调函数 我认为最好举个例子: 在我的类中,有两个函数非常相似,只是有几行。我要做的是用公共代码调用函数,并用特定代码传递回调。在处理不同的对象时,我通常使用模板方法模式来实现这一点,但现在不是这样 一些伪代码:php中带有未定义参数的回调函数和匿名函数,php,callback,anonymous-function,lambda,Php,Callback,Anonymous Function,Lambda,如何使用参数数量未定义的回调函数 我认为最好举个例子: 在我的类中,有两个函数非常相似,只是有几行。我要做的是用公共代码调用函数,并用特定代码传递回调。在处理不同的对象时,我通常使用模板方法模式来实现这一点,但现在不是这样 一些伪代码: public function firstMethod($commonParam, $particularParam) { //some common staff if ($whatever) { //more common st
public function firstMethod($commonParam, $particularParam)
{
//some common staff
if ($whatever) {
//more common staff
//do something particular with $particularParam
}
return $something
}
public function secondMethod($commonParam, $particularParam1, $particularParam2)
{
//some common staff
if ($whatever) {
//more common staff
//do something particular with $particularParam1 and particularParam2
}
return $something
}
现在我想要这样的东西:
public function firstMethod($commonParam, $particularParam)
{
$lamba = function ($particularParam){
//do something particular with $particularParam
};
return $this->commonMethod($commonParam, $lambda);
}
public function secondMethod($commonParam, $particularParam1, $particularParam2)
{
$lamba = function ($particularParam1, $particularParam2){
//do something particular with $particularParam1 and $particularParam2
};
return $this->commonMethod($commonParam, $lambda);
}
private function commonMethod($commonParam, $callback)
{
//some common staff
if ($whatever) {
//more common staff
//CALLING $callback. But how can a pass the parameters when it is not the same number for the anonymous functions?
}
return $something
}
谢谢。这取决于您开发应用程序的PHP版本。在PHP5.6.x中,有一个splash操作符。因此,您可以简单地按如下方式使用它:
function bla($foo, ...$params) {
// $params will be an array with all your parameters
}
在旧版本的PHP中,使用func_get_args()可以得到相同的结果
function bla() {
$numOfArgs = func_num_args();
$parameters = func_get_args();
return $something;
}
// call
$result = bla($param1, $param2, $param3, $param4);