StrategyInterface#

Meritum\Serialization\Strategy\StrategyInterface

Controls the output shape of the EnvelopeInterface produced by the formatter. Two implementations are provided; register a custom one as StrategyInterface::class to override.

Methods#

public function item(ItemInterface $item): EnvelopeInterface;
public function collection(CollectionInterface $collection): EnvelopeInterface;

Built-in implementations#

DataArrayStrategy (default)#

Meritum\Serialization\Strategy\DataArrayStrategy

Items: serialized fields wrapped in a "data" key.

{ "data": { "id": 1, "name": "Jane" } }

Collections: serialized items in a "data" array, pagination keys at root, optional "meta".

{ "total": 50, "limit": 25, "current": 1, "last": 2, "data": [...] }

ArrayStrategy#

Meritum\Serialization\Strategy\ArrayStrategy

Items: serialized fields at the root level. Meta appears as a "meta" key at root if set.

{ "id": 1, "name": "Jane" }

Collections: same shape as DataArrayStrategy.

Registering a strategy#

use Meritum\Serialization\Strategy\ArrayStrategy;
use Meritum\Serialization\Strategy\StrategyInterface;

$kernel->define(StrategyInterface::class, fn() => new ArrayStrategy());

SerializationModule checks for StrategyInterface::class in the container when the formatter is first resolved. If present, it is used; otherwise DataArrayStrategy is used.