有没有办法将额外的参数传递给回调函数?
class Bar{
public function test(){
$count = 0;
$foo = new Class();
$foo->calling([$this, 'barFunction']);
}
public function barFunction($data, $count){
//...
}
我希望 Foo 的调用方法传入数据,并将 $count 作为第二个参数传递。
这是一个用闭包代替参数的例子。如果我使用闭包,我可以传入 $count 但在这种情况下我需要使用 Bar 的类函数。
class Bar{
public function test(){
$count = 0;
$foo = new Class();
$foo->calling(function($data) use($count){
//..some work
});
}
最佳答案
可以使用 call_user_func_array
call_user_func_array([$context, $function], $params);
即在您的示例中,$context
将是 Bar ($this
),$function
将是您的 'barFunction'
,参数将是 [$data, $count]
。
像这样?
<?php
class Foo {
public function __construct() {}
public function mDo($callback) {
$count = 10;
$data = ['a', 'b'];
// do a lot of work (BLOCKING)
call_user_func_array($callback, [$data, $count]);
}
}
class Bar {
public function test() {
$a = new Foo();
$a->mDo([$this, 'callback']);
}
public function callback($data, $count) {
print($data);
print($count);
}
}
$bar = new Bar();
$bar->test();
关于PHP 将附加参数传递给回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34445214/