0
我想獲得下面的PHP代碼來工作。不工作的部分是內部變量$greetingCount
(返回的函數的局部變量)不綁定到外部變量$greetingCount
(方法參數變量)。如何將返回的函數局部變量綁定到方法參數?
class Greetings {
public static function getRepeatGreeterFunc($greetingCount) {
$repeatGreeter = function($greeting) {
// I want $greetingCount to bind to the outer $greetingCount here.
// If 4 is passed to getRepeatGreeterFunc, then it should be 4 here,
// so that what I get is a function that prints the greeting 4 times.
for ($i = 0; $i < $greetingCount; $i++) {
echo $greeting . "\n";
}
};
return $repeatGreeter;
}
public function greet() {
$repeatGreeter = self::getRepeatGreeterFunc(4);
call_user_func($repeatGreeter, "HELLO");
}
}
$greetings = new Greetings();
$greetings->greet();
//輸出:
none
//預期輸出:
HELLO
HELLO
HELLO
HELLO
注:我想一個解決方案時,靜態方法是由非靜態的也工作,否則兩張這兩種情況下的不同解決方案都可以。