PHP использовать () функцию для области? - PullRequest
8 голосов
/ 25 октября 2011

Я видел такой код:

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

но php.net, похоже, не упоминает эту функцию. Я предполагаю, что это связано с областью применения, но как?

Ответы [ 2 ]

15 голосов
/ 25 октября 2011

use - это не функция, это часть синтаксиса Closure .Он просто делает указанные переменные внешней области видимости доступными внутри замыкания.

$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');
3 голосов
/ 25 октября 2011

Указывает анонимной функции сделать доступной $connections (переменная parent ) в своей области видимости.

Без этого $connections не было бы определено внутри функции.

Документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...