PHP:非匿名函数的 use() 替代方法
PHP: alternative to use() to non-anonymous functions
你可以这样做:
$external = 1;
$change = function($number) use(&$external) {
$external = $number;
};
$change(5);
echo $external; //> 5
但是你不能这样做:
$external = 1;
function change($number) use(&$external) {
$external = $number;
}
你会得到:
Parse error: syntax error, unexpected 'use' (T_USE), expecting '{'.
有哪些替代方案?
use()
仅在闭包中用于从父作用域继承变量。来自手册:
Closures may also inherit variables from the parent scope. Any such variables must be passed to the use language construct.
如果您想在常规函数中通过引用使用变量,请使用:
$external = 1;
function change($number, &$external) {
$external = $number;
}
change(5, $external);
或者不传递它,将其用作全局(如果 $external
在全局范围内):
$external = 1;
function change($number) {
$GLOBALS['external'] = $number;
}
change(5);
你可以这样做:
$external = 1;
$change = function($number) use(&$external) {
$external = $number;
};
$change(5);
echo $external; //> 5
但是你不能这样做:
$external = 1;
function change($number) use(&$external) {
$external = $number;
}
你会得到:
Parse error: syntax error, unexpected 'use' (T_USE), expecting '{'.
有哪些替代方案?
use()
仅在闭包中用于从父作用域继承变量。来自手册:
Closures may also inherit variables from the parent scope. Any such variables must be passed to the use language construct.
如果您想在常规函数中通过引用使用变量,请使用:
$external = 1;
function change($number, &$external) {
$external = $number;
}
change(5, $external);
或者不传递它,将其用作全局(如果 $external
在全局范围内):
$external = 1;
function change($number) {
$GLOBALS['external'] = $number;
}
change(5);