PHP:非匿名函数的 use() 替代方法

标签 php anonymous-function

你可以这样做:

$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);

关于PHP:非匿名函数的 use() 替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29308642/

相关文章:

php/mysql 调度电子邮件与邮件配额

javascript - D3 : replacing anonymous function with a named one

javascript - 将带有参数的 javascript 函数分配给变量会立即被调用

php - 在 Magento 中更改客户登录密码

php - 如何使用 bind_result 与 get_result 的示例

php - is_file 与 file_exists 的性能以及 PHP 中的缓存?

c# - 匿名函数体变量保存在哪里?

C# Lambda 返回语句问题

javascript - 如何在组件中使用 react 在匿名方法中使用状态

php - 使用 PHP cURL 登录到远程站点