alcalyn / serializer-doctrine-proxies
为JMS Serializer提供Doctrine代理处理器,以在序列化过程中禁用延迟加载和递归。
1.1.2
2016-06-01 21:07 UTC
Requires
- php: >=5.5
- doctrine/common: ~2.4
- doctrine/orm: ~2.4
- jms/serializer: ~1.1
This package is not auto-updated.
Last update: 2024-09-14 18:36:59 UTC
README
为JMS Serializer提供Doctrine代理处理器,以在序列化过程中禁用延迟加载和递归。
这个库解决了在Stack Overflow上讨论的问题,包括这个帖子或这个帖子,并受到了这个 gist的启发。
安装
使用Composer
{ "require": { "alcalyn/serializer-doctrine-proxies": "1.x" } }
用法
您需要向Serializer实例添加一个处理程序和一个监听器。这里使用SerializerBuilder
use Alcalyn\SerializerDoctrineProxies\DoctrineProxyHandler; use Alcalyn\SerializerDoctrineProxies\DoctrineProxySubscriber; use JMS\Serializer\EventDispatcher\EventDispatcher; use JMS\Serializer\Handler\HandlerRegistryInterface; use JMS\Serializer\SerializerBuilder; $serializer = SerializerBuilder::create() ->addDefaultHandlers() // This line to avoid to default handlers to be overrided by the new one. ->configureHandlers(function (HandlerRegistryInterface $handlerRegistry) { $handlerRegistry->registerSubscribingHandler(new DoctrineProxyHandler()); }) ->configureListeners(function (EventDispatcher $dispatcher) { $dispatcher->addSubscriber(new DoctrineProxySubscriber(false)); // false to disable lazy loading. }) ->build() ; $serializer->serialize($myEntityWithABunchOfRelationsIDontWantToLazyLoadDuringSerialization);
许可证
本项目采用MIT许可证。