При необходимости использовать (в PHP коде) замыкание (closure) A в коде замыкания B, возникает проблема в области видимости. Т.к. внутри B о функции A ничего не известно.
Пример ситуации:
|
|
$A = function() { ... }; $B = function() { ... $localVar = $A(); }; |
Для того чтобы в пространство имен замыкания B попала первая анонимная функция, нужно либо передать её как параметр, либо использовать директиву use:
|
|
$A = function() { ... }; $B = function() use (&$A) { ... $localVar = $A(); }; |
Если требуется рекурсивный вызов анонимной функции, то точно также используется директива use с именем этой функции:
|
|
$B = function() use (&$B) { ... $localVar = $B(); }; |
Данная запись опубликована в 14.12.2020 17:25 и размещена в рубрике PHP.
Вы можете перейти в конец страницы и оставить ваш комментарий.
Мало букафф? Читайте есчо !
Январь 1, 2018 г.
Может пригодиться, к примеру, для задач кеширования. Мы запросим с сервера только заголовки файла и извлечем из них значение last-modified.
Почти готовый вариант я нашел в сети, чуть-чуть изменил для своих задач. Принцип описан ваше.
На входе ...
Читать
Март 10, 2013 г.
Встречались, наверное, с этой задачей - когда из статьи надо вырезать небольшой (а чаще всего, известной длины) кусочек, чтобы сформировать "тизер" или аннотацию. Наиболее правильный подход - предусмотреть для каждого вида аннотации (если статья может ...
Читать
Октябрь 28, 2022 г.
Задача - заменить первое/последнее искомое значение в заданной строке.
В PHP много уделяется внимания работы со строками, но вот оптимального решения для этой задачи нет.
Функция str_replace, заменяет все значения, но может посчитать вам сколько ...
Читать
Декабрь 20, 2016 г.
PHP поддерживает работу с классом DOMDocument, но есть некоторые особенности, которые требуют внимания. Одна из них - это html кодирование символов, если вы не укажете в заголовке документа мета информацию о кодировке.
Рассмотрим пример:
[crayon-6931663b3976d050729778/] ...
Читать