Download the PHP package gilsegura/serializer without Composer
On this page you can find all versions of the php package gilsegura/serializer. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download gilsegura/serializer
More information about gilsegura/serializer
Files in gilsegura/serializer
Package serializer
Short Description A minimal, framework-agnostic serialization contract for PHP 8.5+.
License MIT
Informations about the package serializer
SERIALIZER
A minimal, framework-agnostic serialization contract for PHP 8.4+.
gilsegura/serializer defines a single generic contract, SerializableInterface,
that objects implement to convert themselves to and from a plain array, plus a
Serializer facade that wraps an object together with its class name so it can
be restored later as its exact concrete type.
Features
- PHP 8.4+
- A generic
SerializableInterface<TAttributes>contract:serialize()/deserialize() - Per-implementation attribute shapes via
@implements, fully understood by static analysis - A
Serializerfacade producing a self-describing{class, attributes}structure - No dependencies beyond PHP itself
Installation
The contract
SerializableInterface is generic over the shape of its attributes,
TAttributes. Each implementation declares its own concrete shape with an
@implements tag, so static analysis knows the exact type of every attribute on
both sides of the round trip:
Because the shape is declared in @implements, deserialize() reads
$attributes['x'] as a typed int with no casts or assertions: the analyser
already knows it is an int.
TAttributes is constrained to array, so an implementation may serialize to a
map (an associative object) or to a list:
The Serializer facade
Serializer wraps an object with its class name, producing a self-describing
structure that can be stored or transported and later restored to the exact same
type:
Because the class name travels with the data, deserialize() returns the
original concrete type rather than a generic interface. This makes the format
portable across process boundaries (queues, caches, storage) while staying
type-safe.
Composing serializable objects
An object's serialize() may delegate to nested serializable objects, building
up a tree. Each level declares its own shape, so the whole structure stays typed
end to end. This makes SerializableInterface a good fit for value objects,
domain events, and read models that need a stable, self-describing wire format.
License
MIT. See LICENSE.