Introduction

laminas-serialzier provides an adapter-based interface for serializing and deserializing PHP types to and from different representations.

For more information what a serializer is read the wikipedia page of Serialization.

Quick Start

Serializing adapters can either be created from the provided Laminas\Serializer\Serializer::factory method, or by instantiating one of the Laminas\Serializer\Adapter\* classes.

use Laminas\Serializer\Adapter;
use Laminas\Serializer\Exception;
use Laminas\Serializer\Serializer;

// Via factory:
$serializer = Serializer::factory(Adapter\PhpSerialize::class);

// Alternately:
$serializer = new Adapter\PhpSerialize();

// Now $serializer is an instance of Laminas\Serializer\Adapter\AdapterInterface,
// specifically Laminas\Serializer\Adapter\PhpSerialize

try {
    $serialized = $serializer->serialize($data);
    // now $serialized is a string

    $unserialized = $serializer->unserialize($serialized);
    // now $data == $unserialized
} catch (Exception\ExceptionInterface $e) {
    echo $e;
}

The method serialize() generates a storable string. To regenerate this serialized data, call the method unserialize().

Any time an error is encountered serializing or unserializing, the adapter will throw a Laminas\Serializer\Exception\ExceptionInterface.

Because an application often uses only one serializer internally, it is possible to define and use a default serializer. That serializer will be used by default by other components like Laminas\Cache\Storage\Plugin\Serializer.

To define and use the default serializer, use the static serialization methods of the basic Laminas\Serializer\Serializer:

use Laminas\Serializer\Adapter;
use Laminas\Serializer\Exception;
use Laminas\Serializer\Serializer;

Serializer::setDefaultAdapter(Adapter\PhpSerialize::class);

try {
    $serialized = Serializer::serialize($data);
    // now $serialized is a string

    $unserialized = Serializer::unserialize($serialized);
    // now $data == $unserialized
} catch (Exception\ExceptionInterface $e) {
    echo $e;
}

Basic configuration Options

To configure a serializer adapter, you can optionally use an instance of Laminas\Serializer\Adapter\AdapterOptions, an instance of one of the adapter specific options class, an array, or a Traversable object. The adapter will convert it into the adapter specific options class instance (if present) or into the basic Laminas\Serializer\Adapter\AdapterOptions class instance.

Options can be passed as the second argument to the provided Laminas\Serializer\Serializer::factory and ::setDefaultAdapter methods, via the adapter's setOptions method, or as constructor arguments when directly instantiating an adapter.

Available Methods

Each serializer implements the interface Laminas\Serializer\Adapter\AdapterInterface.

This interface defines the following methods:

Method signature Description
serialize(mixed $value) : string Generates a storable representation of a value.
unserialize(string $value) : mixed Creates a PHP value from a stored representation.

The base class Laminas\Serializer\Serializer is used to instantiate the adapters, to configure the factory, and as a proxy for serialization operations.

It defines the following static methods, where the following references map to classes/interfaces as follows:

  • AdapterPluginManager: Laminas\Serializer\AdapterPluginManager
  • AdapterInterface: Laminas\Serializer\Adapter\AdapterInterface
  • AdapterOptions: Laminas\Serializer\Adapter\AdapterOptions
Method signature Description
factory(/* ... */) : AdapterInterface Create a serializer adapter instance. Arguments are: string|AdapterInterface $adapterName, AdapterOptions|array|Traversable $adapterOptions = null.
setAdapterPluginManager(AdapterPluginManager $adapters) : void Change the adapter plugin manager.
getAdapterPluginManager() : AdapterPluginManager Get the adapter plugin manager.
resetAdapterPluginManager() : void Resets the internal adapter plugin manager.
setDefaultAdapter(string|AdapterInterface $adapter /* ... */): void Change the default adapter. Full argument list: string|AdapterInterface $adapter, AdapterOptions|array|Traversable $adapterOptions = null.
getDefaultAdapter() : AdapterInterface Get the default adapter.
serialize(mixed $data /* ... */) : string Generates a storable representation of a value using the default adapter. Optionally, provide a different adapter via the second argument. Full argument list: mixed $value, string|AdapterInterface $adapter = null, AdapterOptions|array|Traversable $adapterOptions = null.
unserialize(string $value /* ... */) : mixed Creates a PHP value from a stored representation using the default adapter. Optionally, provide a different adapter via the second argument. Full argument list: string $value, string|AdapterInterface|null $adapter = null, AdapterOptions|array|Traversable $adapterOptions = null