Fixed a bug that prevented serialization to work correctly.
v3.4.0, 2019.09.03
Added createClosure static method in Opis\Closure\SerializableClosure.
This method creates a new closure from arbitrary code, emulating create_function,
but without using eval
v3.3.1, 2019.07.10
Use sha1 instead of md5 for hashing file names in Opis\Closure\ReflectionClosure class
v3.3.0, 2019.05.31
Fixed a bug that prevented signed closures to properly work when the serialized string
contains invalid UTF-8 chars. Starting with this version json_encode is no longer used
when signing a closure. Backward compatibility is maintained and all closures that were
previously signed using the old method will continue to work.
v3.2.0, 2019.05.05
Since an unsigned closure can be unserialized when no security provider is set,
there is no reason to treat differently a signed closure in the same situation.
Therefore, the Opis\Closure\SecurityException exception is no longer thrown when
unserializing a signed closure, if no security provider is set.
v3.1.6, 2019.02.22
Fixed a bug that occurred when trying to set properties of classes that were not defined in user-land.
Those properties are now ignored.
v3.1.5, 2019.01.14
Improved parser
v3.1.4, 2019.01.14
Added support for static methods that are named using PHP keywords or magic constants.
Ex: A::new(), A::use(), A::if(), A::function(), A::__DIR__(), etc.
Used @internal to mark classes & methods that are for internal use only and
backward compatibility is not guaranteed.
v3.1.3, 2019.01.07
Fixed a bug that prevented traits to be correctly resolved when used by an
anonymous class
Fixed a bug that occurred when $this keyword was used inside an anonymous class
v3.1.2, 2018.12.16
Fixed a bug regarding comma trail in group-use statements. See issue 23
v3.1.1, 2018.10.02
Fixed a bug where parent keyword was treated like a class-name and scope was not added to the
serialized closure
Fixed a bug where return type was not properly handled for nested closures
Support for anonymous classes was improved
v3.1.0, 2018.09.20
Added transformUseVariables and resolveUseVariables to
Opis\Closure\SerializableClosure class.
Added removeSecurityProvider static method to
Opis\Closure\SerializableClosure class.
Fixed some security related issues where a user was able to unserialize an unsigned
closure, even when a security provider was in use.
Added isBindingRequired and isScopeRequired to the Opis\Closure\ReflectionClosure class
Automatically detects when the scope and/or the bound object of a closure needs to be serialized.
v2.2.1, 2016.08.20
Fixed a bug in Opis\Closure\ReflectionClosure::fetchItems
v2.2.0, 2016.07.26
Fixed CS
Opis\Closure\ClosureContext, Opis\Closure\ClosureScope, Opis\Closure\SelfReference
and Opis\Closure\SecurityException classes were moved into separate files
Added support for PHP7 syntax
Fixed some bugs in Opis\Closure\ReflectionClosure class
Improved closure parser
Added an analyzer for SuperClosure library
v2.1.0, 2015.09.30
Added support for the missing __METHOD__, __FUNCTION__ and __TRAIT__ magic constants
Added some security related classes and interfaces: Opis\Closure\SecurityProviderInterface,
Opis\Closure\DefaultSecurityProvider, Opis\Closure\SecureClosure, Opis\Closure\SecurityException.
Fiexed a bug in Opis\Closure\ReflectionClosure::getClasses method
Other minor bugfixes
Added support for static closures
Added public isStatic method to Opis\Closure\ReflectionClosure class