spiral/marshaller-bridge
Bridge package for Spiral Framework that wires up the Spiral Marshaller with sensible defaults. Provides a bootloader, replaces SerializerBootloader, and lets you configure the MapperFactory and type matchers for custom mapping behavior.
Make sure that your server is configured with following PHP version and extensions:
You can install the package via composer:
composer require spiral/marshaller-bridge
After package install you need to register bootloader from the package.
protected const LOAD = [
// ...
\Spiral\MarshallerBridge\Bootloader\MarshallerBootloader::class,
];
Note Bootloader
Spiral\Serializer\Bootloader\SerializerBootloadercan be removed. If you are usingspiral-packages/discoverer, you don't need to register bootloader by yourself.
The package is already configured by default, use these features only if you need to change the default configuration.
The package provides the ability to configure the Spiral\Marshaller\Mapper\MapperFactoryInterface and matchers used by the Spiral\Marshaller\Marshaller class.
Create a file app/config/marshaller.php.
Add the mapperFactory and matchers configuration parameters. For example:
<?php
declare(strict_types=1);
use Spiral\Core\Container\Autowire;
use Spiral\Marshaller\Mapper\AttributeMapperFactory;
use Spiral\Marshaller\Type\ArrayType;
use Spiral\Marshaller\Type\DateTimeType;
use Spiral\Marshaller\Type\DateIntervalType;
use Spiral\Marshaller\Type\EnumType;
use Spiral\Marshaller\Type\ObjectType;
return [
'mapperFactory' => AttributeMapperFactory::class,
'matchers' => [
EnumType::class,
DateTimeType::class,
DateIntervalType::class,
ArrayType::class,
ObjectType::class,
],
];
Using with Spiral\Serializer\SerializerManager. For example:
use Spiral\Serializer\SerializerManager;
$serializer = $this->container->get(SerializerManager::class);
$result = $manager->serialize($payload, 'marshaller-json');
$result = $manager->serialize($payload, 'marshaller-serializer');
$result = $manager->unserialize($payload, Post::class, 'marshaller-json');
$result = $manager->unserialize($payload, Post::class, 'marshaller-serializer');
Using with Spiral\Marshaller\MarshallerInterface. For example:
use Spiral\Marshaller\MarshallerInterface;
$marshaller = $this->container->get(MarshallerInterface::class);
$result = $marshaller->marshal($from); // from object to array
$result = $marshaller->unmarshal($from, new Post()); // from array to object
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.
How can I help you explore Laravel packages today?