Отримання поточного виконуваного замикання в 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

Налаштування Xdebug з Docker та PHP 8.4 всього за одну хвилину

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

Logomark Logotype

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

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

Logomark Logotype

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

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