gpt4 book ai didi

php - 如何将所有参数传递给我的回调函数?

转载 作者:搜寻专家 更新时间:2023-10-31 20:39:21 25 4
gpt4 key购买 nike

我的类中有一个函数将回调函数作为参数。

但我想将 n 个附加参数传递给回调:

$myClass->each(function($result,$arg1,$arg2,$arg3){

echo $arg2; //expected: bar

},'foo','bar',85);

我要实现的目标:

class myClass {

public function each() {

$callback = func_get_arg(0);
$args = array_slice(func_get_args(), 1); //_____
// |
if (is_callable($callback)) { // | I have $args
foreach ($this->results as $result) {// | But how can I pass
$callback($result,...$args); // | them to $callback
} // ^ | as a set of args?
} // |__________________|
}

}

请注意我使用的是 php 5.4,所以我不能使用 ... 运算符

最佳答案

我相信答案是call_user_func_array。我知道这在 splat 运算符时代似乎有点过时,但我认为它是 5.4 中的最佳选择。

public function each() {
$callback = func_get_arg(0);
$args = func_get_args();

if (is_callable($callback)) {
foreach ($this->results as $result) {
$args[0] = $result;
call_user_func_array($callback, $args);
}
}
}

这只是用适当的 $result 值覆盖了 $args 中的第一项(无论如何我们都不想要)。

关于php - 如何将所有参数传递给我的回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com