cha*_*a0s 1 closures php-closures php-5.3
我一直在为PHP 5.3编写一些代码,我想做类似于我在下面显示的代码.我希望这段代码可以打印'hellohello',但它打印'hello'而不是错误.
看来$ inner闭包不能访问外部函数的参数.这是正常的行为吗?这是一个PHP错误吗?我看不出这怎么可能被认为是正确的行为......
<?php
function outer($var) {
print $var;
$inner = function() {
print $var;
};
$inner();
}
outer('hello');
Run Code Online (Sandbox Code Playgroud)
谢谢!
您需要使用use关键字.有关详细信息,请参阅此
function getAdder($x)
{
return function ($y) use ($x) {
return $x + $y;
};
}
$adder = getAdder(8);
echo $adder(2); // prints "10"
Run Code Online (Sandbox Code Playgroud)
这里,getAdder()函数使用参数$ x(关键字"use"强制从上下文获取变量)创建一个闭包,它接受额外的参数$ y并将其返回给调用者.
因此,要使您的示例按照您希望的方式工作:
<?php
function outer($var) {
print $var;
$inner = function() use ($var) {
print $var;
};
$inner();
}
outer('hello');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
532 次 |
| 最近记录: |