Opis Closure is a library that aims to overcome PHP's limitations regarding closure serialization by providing a wrapper that will make all closures serializable.
The library's key features:
eval
for closure serialization or unserializationuse()
and automatically wraps all referenced/imported closures for
proper serialization__FILE__
, __DIR__
, __LINE__
, __NAMESPACE__
, __CLASS__
,
__TRAIT__
, __METHOD__
and __FUNCTION__
.#trackme
directiveeval()
is not used for unserialization)The full documentation for this library can be found here.
Opis Closure is licensed under the MIT License (MIT).
Opis Closure is available on Packagist and it can be installed from a command line interface by using Composer.
composer require opis/closure
Or you could directly reference it into your composer.json
file as a dependency
{
"require": {
"opis/closure": "^3.1"
}
}
If your project needs to support PHP 5.3 you can continue using the 2.x
version
of Opis Closure. Otherwise, assuming you are not using one of the removed/refactored classes or features(see
CHANGELOG), migrating to version 3.x
is simply a matter of updating your composer.json
file.
Opis Closure follows semantic versioning specifications.
This feature was primarily introduced in order to support serializing an object bound
to a closure and available via $this
. The implementation is far from being perfect
and it's really hard to make it work flawless. I will try to improve this, but I can
not guarantee anything. So my advice regarding the Opis\Closure\serialize|unserialize
functions is to use them with caution.
Opis Closure is shipped with an analyzer(Opis\Closure\Analyzer
) which
aims to provide Opis Closure's parsing precision and speed to SuperClosure.