liip/serializer-jms-适配器

适配器,用于将 liip/serializer 替换为 jms/serializer。

2.2.1 2023-08-21 06:54 UTC

This package is auto-updated.

Last update: 2024-09-07 15:38:27 UTC


README

此适配器使 liip/serializer 成为 jms/serializer 的即插即用替代品。

此适配器的第1版用于集成 JMS Serializer 第1版,第2版用于 JMS Serializer 第2版和第3版。(因为 JMS 序列化器接口中存在 BC 破坏,阻止此库使用相同的代码支持 JMS 1和2/3。)

此库提供了一个序列化器,它尝试使用 Liip 序列化器,并在出错时回退到 JMS 序列化器。您需要使用此库中提供的 Liip\Serializer\Adapter\JMS\AdapterSerializationContext,而不是常规的 JMS\Serializer\SerializationContext。当与自行创建上下文的库一起工作时,您可以使用 Serializer\Adapter\JMS\AdapterSerializationContextFactory

用法

use JMS\Serializer\Serializer as JMSSerializer;
use Liip\Serializer\Adapter\JMS\JMSSerializerAdapter;
use Liip\Serializer\Serializer as LiipSerializer;

// see https://github.com/liip/serializer/ for how to set up the Liip Serializer
$liipSerializer = new LiipSerializer(...);
// see https://jmsyst.com/libs/serializer for how to set up JMS Serializer
$jmsSerializer = new JMSSerializer(...);

$serializer = new JMSSerializerAdapter($liipSerializer, $jmsSerializer, new NullLogger());

// $serializer can now be used in place of $jmsSerializer

仅使用 Liip 序列化器处理部分模型

JMSSerializerAdapter 接受一个额外的构造函数参数,用于指定启用类的列表。如果指定了该列表,则仅尝试使用 Liip 序列化器处理这些类。如果您想为某些模型使用 JMS 序列化器,而为其他模型使用 Liip 序列化器,请使用此配置以避免开销,并避免适配器产生的您不关心的警告日志条目。

$enabledClasses = ['App\Model\Product', 'App\Model\Category'];

$serializer = new JMSSerializerAdapter($liipSerializer, $jmsSerializer, new NullLogger(), $enabledClasses);