Opis Closure

Installation, licensing and requirements

Opis Closure is a PHP library that allows you to serialize closures and arbitrary data.

The library’s key features:

  • Serialize arbitrary objects
  • Handles circular references
  • Custom serialization/deserialization integrations
  • Implementation for SPL Classes (ArrayObject, SplObjectStorage, etc.)
  • Supports cryptographically signed data
  • Serialize closures (anonymous functions)
    • PHP 8+ syntax
    • namespace and imports
    • attributes, parameter types, return type
    • use variables (including self-references)
    • bound object ($this) and scope
    • static and short closures
    • anonymous classes inside closures
    • magic constants like __FILE__, __DIR__, __LINE__, __NAMESPACE__, __CLASS__, __TRAIT__, __METHOD__ and __FUNCTION__.
    • track residing source by using the #trackme directive
    • any error or exception, that might occur when executing an unserialized closure, can be caught and treated properly
    • simple and very fast parser
    • you can serialize/unserialize any closure unlimited times, even those previously unserialized (this is possible because eval() is not used for unserialization)
    • provides a reflector that can give you information about the serialized closure
    • the serialized source code is now almost identical to original

License

Opis Closure is licensed under the MIT License (MIT).

Requirements

  • PHP 8.0 or higher

Migrating from 3.x

If your projects needs to support PHP 7.x you can continue using the 3.x version of Opis Closure. Otherwise, see the migration guide.

Installation

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": "^4.0"
    }
}