Отримання поточного виконуваного замикання в PHP 8.1

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 25 липня, 2025
PHP 8.5 готовий запропонувати нові можливості для роботи з рекурсією в замиканнях — тепер ви можете легко звертатися до виконуваного закриття. Дізнайтеся, як новий метод `getCurrent()` спрощує реалізацію рекурсивних функцій у нашій статті

У PHP 8.5 підтримуватиметься рекурсія у Closure за допомогою отримання інформації про поточний виконувач Closure (подяка Александру Добуа). Як зазначено в RFC:closure_self_reference, наразі обхідним варіантом є прив'язка змінної в Closure:

$fibonacci = function (int $n) use (&$fibonacci) {
    if ($n === 0) return 0;
    if ($n === 1) return 1;
    return $fibonacci($n - 1) + $fibonacci($n - 2);
};
 
echo $fibonacci(10) . "\n";

З початку PHP 8.5 ви зможете використовувати метод getCurrent() для отримання інформації про поточний виконувач Closure. Цей код пропонує інший підхід у порівнянні з оригінальним RFC, і автор назвав його "набагато простішою альтернативою":

$fibonacci = function (int $n) {
    if (0 === $n || 1 === $n) {
        return $n;
    }
 
    $fn = Closure::getCurrent();
 
    return $fn($n - 1) + $fn($n - 2);
};
 
echo $fibonacci(10) . "\n";

Якщо вас цікавить реалізація, зверніть увагу на Pull Request #18167 у вихідному коді PHP (дивіться eb65ec4).

Популярні

Logomark Logotype

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Logomark Logotype

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше