liip / serializer-jms-适配器
适配器,用于将 liip/serializer 替换为 jms/serializer。
2.2.1
2023-08-21 06:54 UTC
Requires
- php: ^8.0
- ext-json: *
- jms/serializer: ^2.0||^3.0
- liip/serializer: ^1.0 || ^2.0
- pnz/json-exception: ^1.0
- psr/log: ^1 | ^2 | ^3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.20.0
- phpstan/phpstan: ^1.2
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^8.5.29 || ^9.5.23
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);