gpt4 book ai didi

PHP 将附加参数传递给回调函数

转载 作者:可可西里 更新时间:2023-11-01 12:55:18 25 4
gpt4 key购买 nike

有没有办法将额外的参数传递给回调函数?

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/

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