boulzy/data-transformer

将对象转换为其他对象

dev-main 2024-02-24 01:34 UTC

This package is auto-updated.

Last update: 2024-09-24 02:06:31 UTC


README

boulzy/data-transformer 库提供了一个简单灵活的方法来将对象转换为其他对象。

📋 目录

👋 介绍

在处理数据时,有时需要改变数据的表示形式,以便它们可以被应用程序的不同组件使用。一个常见的例子是将 DTO 转换为业务对象,反之亦然。

这种转换通常涉及大量与应用程序业务逻辑无关的样板代码。这个库旨在通过提供一种简单灵活的方式将一个对象转换为另一个类的对象来减少代码重复。

⚙️ 需求

  • PHP ^8.3
  • symfony/property-access ^7.0
  • symfony/property-info ^7.0
  • phpdocumentor/reflection-docblock ^5.3

ℹ️ 这个库还提供了一个包,可以在 Symfony 应用程序中使用和扩展 DataTransformer。

📚 文档

文档位于本存储库的 docs/ 目录中。

⬇️ 安装

使用 Composer 进行安装。

composer require boulzy/data-transformer

不要忘记包含 vendor/autoload.php 文件。

🧑‍💻 使用

首先,您必须获取 \Boulzy\DataTransfomer\DataTransformerInterface 的实例。

如果您不在 Symfony 应用程序中,请查阅 文档 了解如何获取 DataTransformer 对象。

DataTransformer 提供了一个方法:transform(object $source, string $targetClass): object。第一个参数是您当前拥有的对象,第二个参数是您想要转换到的类。

<?php

namespace App\Controller;

use App\DTO\EditUser;
use App\Entity\User;
use Boulzy\DataTransformer\DataTransformerInterface;
use Doctrine\Persistence\ObjectManager;
use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException;
use Symfony\Component\Validator\Validator\ValidatorInterface;

class UserController
{
    public function __construct(
        private ValidatorInterface $validator,
        private DataTransformerInterface $transformer,
        private ObjectManager $manager,
    ) {
    }

    public function __invoke(EditUser $editUser): User
    {
        $errors = $this->validator->validate($editUser);
        if (0 < \count($errors)) {
            throw new UnprocessableEntityHttpException((string) $errors);
        }

        $user = $this->transformer->transform($editUser, User::class);
        $this->manager->flush();

        return $user;
    }
}

准备好了解更多了吗? 让我们开始吧!🚀