Intereting Posts
Ошибка: количество связанных переменных не совпадает с числом токенов Перенаправить все запросы в web / app.php в Symfony Mysql – таблица UPDATE SET column = SELECT COUNT (*) FROM (SELECT * FROM table2 WHERE table2.id = table.id)) Невозможно CakePHP – тайм-аут сеанса Кодирование / Сжатие большого целого числа в буквенно-цифровое значение как запустить массив с 1 вместо 0? Symfony2: Перенаправление на последний маршрут и флэш-сообщение? Ключевое слово LIMIT в MySQL с подготовленным оператором Почему PHP назначает контекст вызову статического метода и не дает уведомления E_STRICT? Как я могу усечь строку до первых 20 слов в PHP? Microsoft® ODBC Driver 11 для SQL Server® на RedHat Linux с PHP – дает ошибку, когда параметр привязки с PDO для хранимых процедур Перенаправить все страницы одного ДВУ в другой Laravel 4 – Перенаправление :: маршрут с параметрами Как писать отчеты о подготовке и выполнении в OOP PDO? Не знаю, как решить (между Php и Javascript)

Какое использование ключевого слова в закрытии в php

Я нашел код вроде этого и не могу найти, что он делает

$callback = function ($pricePerItem) use ($tax, &$total) { $total += $pricePerItem * ($tax + 1.0); }; 

Документация php только говорит

Ключ «use» также применяется к конструкциям закрытия:

но не объясняет, что он на самом деле делает.

Он контролирует область действия. В этом случае переменные $tax и $total объявляются вне анонимной функции. Поскольку они перечислены в предложении use, они доступны изнутри.

Амперсанд делает переменную полностью разделенной – например, изменения, сделанные в закрытии, отразятся во внешнем масштабе. В случае $tax , переменная является копией, поэтому ее нельзя изменить из-за закрытия.

Большинство других языков с поддержкой анонимных функций просто по умолчанию имеют лексическую область, но поскольку у PHP уже есть другие правила определения области охвата, это создаст всевозможные странные ситуации, нарушая совместимость с предыдущими версиями. В качестве курорта это было довольно неудобное решение.

Проверьте это – http://php.net/manual/en/functions.anonymous.php , если анонимная функция хочет использовать локальные переменные (для вашего кода это $tax и $total ), он должен использовать use для ссылки на них ,