You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CHANGELOG
v3.6.1, 2020.11.07
- Fixed serialization error #84
v3.6.0, 2020.10.12
- Initial PHP 8 Support #67.
v3.5.7, 2020.09.06
- Fixed issue #76.
- Fixed issue #78.
v3.5.6, 2020.08.11
v3.5.5, 2020.06.17
- Fixed a false-positive when using
Opis\Closure\ReflectionClosure::isScopeRequired
method
v3.5.4, 2020.06.07
- Fixed a false-positive when using
Opis\Closure\ReflectionClosure::isScopeRequired
method
- Fixed a bug related to
T_STRING_VARNAME
v3.5.3, 2020.05.25
- Improved parser
- The class scope optimisation is no longer used. We always bind now to the closure’s original class scope.
When the class scope was
null
, the optimisation failed to work as expected and kept the wrong SerializableClosure
scope.
v3.5.2, 2020.05.21
- Removed extra semicolon in short closures, since is not part of the closure’s body.
v3.5.1, 2019.11.30
v3.5.0, 2019.11.29
- Added support for short closures (arrow functions)
- Added
isShortClosure
method to Opis\Closure\ReflectionClosure
v3.4.2, 2019.11.29
- Added
stream_set_option()
v3.4.1, 2019.10.19
- 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
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.
v3.0.12, 2018.02.23
v3.0.11, 2018.01.22
v3.0.10, 2018.01.04
- Improved support for PHP 7.1 & 7.2
v3.0.9, 2018.01.04
- Fixed a bug where the return type was not properly resolved.
See issue 17
- Added more tests
v3.0.8, 2017.12.18
v3.0.7, 2017.10.31
- Bugfix: static properties are ignored now, since they are not serializable
v3.0.6, 2017.10.06
- Fixed a bug introduced by accident in 3.0.5
v3.0.5, 2017.09.18
- Fixed a bug related to nested references
v3.0.4, 2017.09.18
- [internal] Refactored
SerializableClosure::mapPointers
method
- [internal] Added a new optional argument to
SerializableClosure::unwrapClosures
- [internal] Removed
SerializableClosure::getClosurePointer
method
- Fixed various bugs
v3.0.3, 2017.09.06
- Fixed a bug related to nested object references
- [internal]
Opis\Closure\ClosureScope
now extends SplObjectStorage
- [internal] The
storage
property was removed from Opis\Closure\ClosureScope
- [internal] The
instances
and objects
properties were removed from Opis\Closure\ClosureContext
v3.0.2, 2017.08.28
- Fixed a bug where
$this
object was not handled properly inside the
SerializableClosre::serialize
method.
v3.0.1, 2017.04.13
- Fixed a bug in ‘ignore_next’ state
v3.0.0, 2017.04.07
- Dropped PHP 5.3 support
- Moved source files from
lib
to src
folder
- Removed second parameter from
Opis\Closure\SerializableClosure::from
method and from constructor
- Removed
Opis\Closure\{SecurityProviderInterface, DefaultSecurityProvider, SecureClosure}
classes
- Refactored how signed closures were handled
- Added
wrapClosures
and unwrapClosures
static methods to Opis\Closure\SerializableClosure
class
- Added
Opis\Colosure\serialize
and Opis\Closure\unserialize
functions
- Improved serialization. You can now serialize arbitrary objects and the library will automatically wrap all closures
v2.4.0, 2016.12.16
- The parser was refactored and improved
- Refactored
Opis\Closure\SerializableClosure::__invoke
method
Opis\Closure\{ISecurityProvider, SecurityProvider}
were added
Opis\Closure\{SecurityProviderInterface, DefaultSecurityProvider, SecureClosure}
were deprecated
and they will be removed in the next major version
setSecretKey
and addSecurityProvider
static methods were added to Opis\Closure\SerializableClosure
v2.3.2, 2016.12.15
- Fixed a bug that prevented namespace resolution to be done properly
v2.3.1, 2016.12.13
v2.3.0, 2016.11.17
- 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
v2.0.1, 2015.09.23
- Removed
branch-alias
property from composer.json
- Bugfix. See issue #6
v2.0.0, 2015.07.31
- The closure parser was improved
- Class names are now automatically resolved
- Added support for the
#trackme
directive which allows tracking closure’s residing source
v1.3.0, 2014.10.18
- Added autoload file
- Changed README file
Opis Closure 1.2.2