Opis Closure — это библиотека, целью которой является преодоление ограничений PHP в отношении сериализации замыканий путем предоставления оболочки, которая сделает все замыкания сериализуемыми.
Основные возможности библиотеки:
Сериализация любого замыкания
Сериализация произвольных объектов
Не использует eval
для сериализации или десериализации закрытия.
Работает с любой версией PHP, поддерживающей замыкания.
Поддерживает синтаксис PHP 7.
Обрабатывает все переменные, на которые имеются ссылки/импортируются в use()
, и автоматически оборачивает все указанные/импортированные замыкания для правильной сериализации.
Обрабатывает рекурсивные замыкания
Обрабатывает магические константы, такие как __FILE__
, __DIR__
, __LINE__
, __NAMESPACE__
, __CLASS__
, __TRAIT__
, __METHOD__
и __FUNCTION__
.
Автоматически разрешает все имена классов, имена функций и имена констант, используемые внутри замыкания.
Отслеживайте постоянный источник замыкания с помощью директивы #trackme
Простой и очень быстрый парсер
Любую ошибку или исключение, которое может возникнуть при выполнении несериализованного замыкания, можно обнаружить и обработать должным образом.
Вы можете сериализовать/десериализовать любое замыкание неограниченное количество раз, даже если оно было ранее несериализовано (это возможно, поскольку eval()
не используется для десериализации).
Обрабатывает статические замыкания
Поддерживает замыкания с криптографической подписью.
Предоставляет отражатель, который может предоставить вам информацию о серийном затворе.
Предоставляет анализатор библиотеки SuperClosure .
Автоматически определяет, когда область действия и/или связанный объект замыкания необходимо сериализовать, чтобы замыкание работало после десериализации.
Полную документацию по этой библиотеке можно найти здесь.
Описание Closure распространяется по лицензии MIT (MIT).
PHP ^5.4 || ^7,0 || ^8,0
Opis Closure доступен на Packagist, и его можно установить из интерфейса командной строки с помощью Composer.
композитору требуется описание/завершение
Или вы можете напрямую ссылаться на него в файл composer.json
как на зависимость.
{"require": {"описание/закрытие": "^3.5"} }
Если ваш проект должен поддерживать PHP 5.3, вы можете продолжить использовать версию Opis Closure 2.x
В противном случае, если вы не используете ни один из удаленных/переработанных классов или функций (см. CHANGELOG), переход на версию 3.x
— это просто вопрос обновления вашего файла composer.json
.
Описание Closure соответствует спецификациям семантического управления версиями.
Мы добавили эту функцию, чтобы иметь возможность поддерживать сериализацию связанного объекта замыкания. Реализация далека от совершенства, и заставить ее работать безупречно очень сложно. Мы постараемся это улучшить, но ничего гарантировать не можем. Поэтому наш совет относительно функций OpisClosureserialize|unserialize
— использовать их с осторожностью.