我有一个带有回调的类。我将一个字符串传递给类,然后使用该字符串作为回调函数调用回调。它的工作原理有点像这样:
$obj->runafter( 'do_this' );
function do_this( $args ) {
echo 'done';
}
我想要做的是在循环内运行它,这样函数就不会被多次写入我想向函数名称添加一个变量。我想做的是这样的:
for( $i=0;$i<=3;$i++ ) :
$obj->runafter( 'do_this_' . $i );
function do_this_{$i}( $args ) {
echo 'done';
}
endfor;
关于如何在 PHP 中完成此操作的任何想法?
最佳答案
我会将函数作为闭包直接传入:
for($i=0; $i<=3; $i++) {
$obj->runafter(function($args) use($i) {
echo "$i is done";
});
}
请注意如何使用($i)
使此局部变量在您的回调中可用(如果需要)。
这是一个工作示例:https://3v4l.org/QV66p
关于可调用对象和闭包的更多信息:
关于PHP:如何将变量添加到函数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36015710/