Download the PHP package frodeborli/serializor without Composer
On this page you can find all versions of the php package frodeborli/serializor. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download frodeborli/serializor
More information about frodeborli/serializor
Files in frodeborli/serializor
Package serializor
Short Description PHP Serializor will serialize almost anything in PHP, including closures and anonymous classes.
License MIT
Informations about the package serializor
Serializor
Serialize closures and anonymous classes
Serializor is a PHP library that allows you to serialize closures, anonymous classes, and arbitrary data - without wrapper classes or code modifications.
Key features:
- serialize closures without wrapper classes
- serialize anonymous classes
- works with readonly properties - no
__serialize()required - works with typed
Closureproperties (public readonly Closure $handler) - handles circular and recursive references
- supports WeakReference and WeakMap with correct weak semantics
- supports SPL classes (ArrayObject, SplObjectStorage, SplDoublyLinkedList, etc.)
- supports DateTime classes
- extensible via custom transformers
- optional HMAC signing for secure cross-machine serialization
- does not rely on PHP extensions (no FFI or similar dependencies)
- supports PHP 8.2 - 8.5
Example: Closure serialization
Example: Anonymous class serialization
Example: Readonly properties (no class modifications)
Installation
Serializor is available on Packagist and can be installed via Composer:
Requirements
- PHP >= 8.2
Security
By default, Serializor does not sign serialized data. For production use, especially in distributed systems or job queues, you should set a shared secret:
When a secret is set, all serialized data is HMAC-signed to prevent tampering.
Custom Serializers
For types that need special handling (like database connections that must be reconnected), you can register custom serialization logic:
See tests/Transformers/CustomTransformerTest.php for a complete example.
Comparison with Other Libraries
| Feature | Serializor | opis/closure 4.x | laravel/serializable-closure |
|---|---|---|---|
| Closure serialization | Yes | Yes | Yes |
| Anonymous class serialization | Yes | Yes | No |
| No wrapper classes required | Yes | Yes | No |
Readonly Closure properties |
Yes | Requires __serialize() |
No |
| WeakReference / WeakMap | Yes | Yes | No |
| SplObjectStorage | Yes | Yes | No |
| HMAC signing | Yes | Yes | Yes |
| Test coverage | 277 tests | ~70 tests | ~130 tests |
Serializor's advantages:
- Works with typed readonly properties and third-party objects without any class modifications
- Most comprehensive test suite covering edge cases from opis/closure GitHub issues
- Supports PHP 8.2-8.5 features including property hooks and pipe operator
Migrating from Laravel or Opis
Serializor can unserialize data that was serialized by laravel/serializable-closure or opis/closure, providing a seamless upgrade path. The original library must remain installed for deserialization to work:
This allows gradual migration: keep the old library installed while transitioning, then remove it once all stored data has been re-serialized with Serializor.
Known Limitations
- Anonymous classes extending internal PHP classes (stdClass, ArrayObject) cannot be serialized
- Multiple closures on the same line with identical signatures cannot be distinguished (PHP limitation)
History
Serializor was first released on September 5, 2024, introducing a novel architecture for PHP closure serialization: direct serialization without wrapper classes, stream wrapper-based reconstruction, WeakMap + ReflectionReference cycle detection, and an extensible transformer system.
Four months later, Opis/Closure v4.0.0 (December 2024) was released as a "complete rewrite" featuring remarkably similar architectural choices. For a detailed technical comparison, see DESIGN.md.
Performance
License
Serializor is licensed under the MIT License.