Класс Closure

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Введение

Класс представляет анонимные функции.

Анонимные функции становятся объектами Closure. Класс содержит методы для управления экземпляром анонимной функции.

Кроме списка методов на этой странице, класс замыкания также содержит магический метод __invoke, который определили не для вызова анонимной функции — метод не срабатывает при вызове объекта замыкания, — а только для согласованности с другими классами, в которых реализовали магический вызов объекта как функции.

Обзор класса

final class Closure {
/* Методы */
private function __construct()
public static function bind(Closure $closure, ?object $newThis, object|string|null $newScope = "static"): ?Closure
public function bindTo(?object $newThis, object|string|null $newScope = "static"): ?Closure
public function call(object $newThis, mixed ...$args): mixed
public static function fromCallable(callable $callback): Closure
public static function getCurrent(): Closure
}

Список изменений

Версия Описание
8.4.0 Вывод метода Closure::__debugInfo() теперь дополнительно включает следующие свойства объекта замыкания: "name", "line" и "file".

Примечания

Замечание: Объекты Closure невозможно сериализовать, поскольку замыкания связывают переменные в конкретном контексте выполнения, доступность которых невозможно гарантировать в точке восстановления, например при десериализации замыкания в другой области действия. Попытка сериализовать замыкание выбросит исключение Exception.

Содержание

  • Closure::__construct — Конструктор, запрещающий создание экземпляра
  • Closure::bind — Дублирует замыкание и привязывает копию замыкания к объекту и области видимости класса статически
  • Closure::bindTo — Дублирует замыкание и привязывает копию замыкания к объекту и области видимости класса
  • Closure::call — Связывает и запускает замыкание
  • Closure::fromCallable — Конвертирует callable в замыкание
  • Closure::getCurrent — Возвращает текущее выполняемое замыкание