PHP闭包
最近我了解到,PHP可以将函数赋给变量。
可以像这样使用。
$func = function() {
echo 'hello';
}; // 変数の右辺なので、「;」が必要っぽい
$func(); // hello
哦,我想到了一个可能的想法,就是是否可以在中文中实现类似JavaScript中的闭包…
$func = function() {
$x = 0;
return function() use($x) {
return ++$x;
};
};
$func2 = $func();
echo $func2(); // 1
echo $func2(); // 2かと思いきや、1
echo $func2(); // 3かと思いきや、1
echo $func2(); // 4かと思いきや、1
哎呀?(´・ω・`)
我稍微查了一下,在手冊的无名函数部分,
引用的变量值是在函数定义时的值,而不是在函数调用时的值。
看起来不能做哦。
补充说明:
根据@mpyw先生的评论,成功运行了!非常感谢!以下是代码的运行结果。
$func = function() {
$x = 0;
return function() use(&$x) {
return ++$x;
};
};
$func2 = $func();
echo $func2(); // 1
echo $func2(); // 2
echo $func2(); // 3
哦,原来是应该传递指针的啊…
如评论区所提到的@mpyw的代码更简洁,我认为你也可以参考那个。