Переменные PHP в анонимных функциях


Я играл с анонимными функциями в PHP и понял, что они, похоже, не достигают переменных вне их. Есть ли какой-нибудь способ обойти эту проблему?

Пример:

$variable = "nothing";

functionName(someArgument, function() {
  $variable = "something";
});

echo $variable;  //output: "nothing"

Это выведет "ничего". Есть ли какой-либо способ, которым анонимная функция может получить доступ к $variable?

Author: einord, 2012-07-10

1 answers

Да, используйте замыкание:

functionName(someArgument, function() use( &$variable) {
  $variable = "something";
});

Обратите внимание, что для того, чтобы вы могли изменять $variable и извлекать измененное значение за пределами области действия анонимной функции, на него необходимо ссылаться в закрытии с помощью &.

 201
Author: nickb, 2016-05-12 16:37:07