[英]PHP: How to add a variable to a function name?
我有一個回調課。 我將一個字符串傳遞給類,並使用該字符串作為回調函數調用回調。 它有點像這樣:
$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";
});
}
請注意如何在需要時use($i)
在回調中使用此局部變量。
這是一個工作示例: https : //3v4l.org/QV66p
有關callables和closures的更多信息:
您可以將函數賦值給變量並創建閉包,也可以通過use關鍵字在匿名函數范圍之外傳遞變量
$callback = function($args) use($i) {
echo "$i is done";
};
for ($i = 0; $i <= 3; $i++) {
$arg = "some argument";
$obj->runafter($callback($arg));
}
有用的鏈接:
根據你的問題,你應該在循環之前定義你的函數。 然后,您不必擔心在每次循環迭代時重新定義它。
function do_this( $args ) {
echo 'done';
}
for( $i=0;$i<=3;$i++ ) :
$obj->runafter( 'do_this' );
endfor;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.