alcalyn / serializer-doctrine-proxies

为JMS Serializer提供Doctrine代理处理器,以在序列化过程中禁用延迟加载和递归。

1.1.2 2016-06-01 21:07 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:36:59 UTC


README

Latest Stable Version Total Downloads License

为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许可证。