我有:
function outside( $limit ) {
$tally = 0;
return function() use ( $limit, &$tally ) {
$tally++;
if( $tally > $limit ) {
echo "limit has been exceeded";
}
};
}
$inside = outside( 2 );
$inside();
$inside();
$inside();
输出结果:超过限制
我的理解:
在
$inside = outside(2);
中,返回匿名函数并将其分配给变量$inside
。匿名函数使用$limit
(2)和$tally
(0)的值。调用函数
$inside()
。这将$tally
递增到1
。该值被记住,$limit
也是如此。为什么在$tally
前面要加上&符号?我知道它用于创建引用,但在这种情况下,它让我感到困惑。这个闭包如何记住$limit
的值?
任何官方文档的参考资料都会有所帮助!
use
关键字本身的使用。 - Scopey