PHP use() 函数的作用域?

2022-08-30 16:36:10

我见过这样的代码:

function($cfg) use ($connections) {}

但 php.net 似乎没有提到这个功能。我猜它与范围有关,但如何?


答案 1

use不是函数,它是闭包语法的一部分。它只是使外部作用域的指定变量在闭包内可用。

$foo = 42;

$bar = function () {
    // can't access $foo in here
    echo $foo; // undefined variable
};

$baz = function () use ($foo) {
    // $foo is made available in here by use()
    echo $foo; // 42
}

例如:

$array = array('foo', 'bar', 'baz');
$prefix = uniqid();

$array = array_map(function ($elem) use ($prefix) {
    return $prefix . $elem;
}, $array);

// $array = array('4b3403665fea6foo', '4b3403665fea6bar', '4b3403665fea6baz');

答案 2

它告诉匿名函数在其作用域中使(变量)可用。$connections

没有它,就不会在函数内部定义。$connections

文档


推荐