fd6130/fractal-bundle

League 的 Fractal Bundle,为 Symfony 实现了依赖注入到您的转换器中

4.1.1 2022-05-23 14:40 UTC

This package is auto-updated.

Last update: 2024-09-23 19:58:38 UTC


README

此包为 Symfony 提供了 league/fractal 的集成。此外,它允许您使用转换器作为服务。

这是 samjarrett/FractalBundle 的分支版本。

入门

要求

  • PHP >= 7.4
  • Symfony 4, 5 和 6

通过 composer 安装

composer require fd6130/fractal-bundle

如果您使用 symfony flex,它将自动为您注册该包。

使用方法

您可以使用命令 php bin/console make:fractal-transformer 创建一个转换器。

或者,您可以自己创建它,并将其放置在 src/Transformer 中。

class UserTransformer extends TransformerAbstract
{    
    public function transform(User $user): array
    {
        $data = [
            'id' => $user->id(),
            'name' => $user->name(),
        ];
        
        return $data;
    }
}

$resource = new Collection($users, UserTransformer::class);

$response = $manager->createData($resource)->toArray();

向转换器注入服务

您可以通过构造函数将服务注入到转换器中

class UserTransformer extends TransformerAbstract
{
    private $entityManager;
    
    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->entityManager = $entityManager;
    }
    
    public function transform(User $user): array
    {
        $data = [
            'id' => $user->id(),
            'name' => $user->name(),
        ];

        // $this->entityManager->getRepository(...)
        
        return $data;
    }
}