Ответ 1
Можно ли их вызвать без присваивание идентификатору, как мы это делаем в JavaScript? например.
Не в PHP 5.x; если вы не посчитаете это, когда ваш метод принимает обратный вызов в качестве аргумента. например:
$square = array_map(function ($v) { return $v*$v; }, $array);
Какое правильное использование строить при определении анонимного Функция
Ключевое слово use
указывает, какие переменные из текущей лексической области должны быть импортированы в закрытие. Вы даже можете передать их по ссылке и изменить передаваемую переменную, например:
$total = 0;
array_walk($array, function ($v) use (&$total) { $total += $v; });
// $total is now the sum of elements in $array
что такое статус анонимного функции в общедоступном методе с доступность частной собственности?
Закрытия, определенные внутри класса, имеют полный доступ ко всем его свойствам и методам, включая частные, без необходимости импортировать $this
через ключевое слово use
в PHP 5.4:
// this works fine in PHP 5.4
$anon_func =
function($my_param) {
$thing = $my_param + $this->object_property;
echo('anonymous function');
};
Обратите внимание, что по какой-то странной причине поддержка $this
в закрытии была удалена в PHP 5.3. В этой версии вы можете обойти это ограничение, используя что-то вроде:
// a workaround for PHP 5.3
$temp = $this;
$anon_func =
function($my_param) use ($temp) {
$thing = $my_param + $temp->object_property;
echo('anonymous function');
};
Но это дает вам доступ только к открытым членам, и попытка доступа к закрытым членам все равно даст вам ошибку.
Также обратите внимание, что попытка импортировать $this
(через use
), независимо от версии PHP, приведет к фатальной ошибке Cannot use $this as lexical variable
.