chaplean/dto-handler-bundle

此包已废弃,不再维护。未建议替代包。

将请求内容加载到 DTO 中

v2.3.3 2020-06-23 15:21 UTC

This package is auto-updated.

Last update: 2022-06-03 08:05:30 UTC


README

此版本的包需要 Symfony 3.4+。

Package version Build Status Coverage Status contributions welcome License

dto-handler-bundle 将请求内容加载到数据传输对象(DTO)中,映射其属性,如数据库中的实体。它使用 SensioLabs Framework Extra Bundle 提供的 ParamConverterInterface 自动将请求内容映射到相应的变量。

快速入门

dto-handler-bundle 使用简单,几乎不需要配置。要在控制器中使用,只需在控制器参数中声明变量即可

public function postAction(DummyDataTransferObject $dto): Response
{
   // ...
}

并在您的 DTO 中添加 DTO 注解

/**
 * @DTO
 */
final class DummyDataTransferObject
{
    // ...
}

目录

  1. 安装
  2. 入门
  3. 示例
  4. 版本控制
  5. 贡献
  6. 黑客攻击
  7. 许可

1. 安装

此包至少需要 Symfony 3.4。

您可以使用 composer 安装 dto-handler-bundle

composer require chaplean/dto-handler-bundle

然后,通过将其添加到项目中 app/AppKernel.php 文件中注册的包列表中,来启用该包

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = [
            // ...
            new Chaplean\Bundle\DtoHandlerBundle\ChapleanDtoHandlerBundle(),
        ];

        // ...
    }

    // ...
}

2. 入门

3. 示例

以下示例中,请求中的数据将加载到 DTO 中。

$property1$property2 将保持不变,因此它们的值将是请求中设置的值。

$property3 将使用字段 keyname 映射到适当的实体,因此请求中 property3 字段的值应该是 DummyEntity 的 keyname

$property4 将是使用 id 映射的实体的数组,因此请求中 property4 的值应该是一个 id 的数组。

控制器

/**
 * ...
 *
 * @ParamConverter(
 *     name="dtoVariable",
 *     converter="data_transfer_object_converter",
 *     options={"validations": "violationsList"}
 * )
 *
 * @param DummyDataTransferObject          $dummyDataTransferObject
 * @param ConstraintViolationListInterface $violationsList
 *
 * @return Response
 */
public function postAction(
    DummyDataTransferObject $dummyDataTransferObject,
    ConstraintViolationListInterface $violationsList
): Response {
    // ...
}

数据传输对象(DummyDataTransferObject)

/**
 * Class DummyDataTransferObject.
 *
 * @DTO
 */
final class DummyDataTransferObject
{
    /**
     * @var string
     */
    public $property1;

    /**
     * @var integer
     *
     * @Assert\Type("integer")
     */
    public $property2;

    /**
     * @var DummyEntity
     *
     * @Assert\Type("Chaplean\Bundle\DtoHandlerBundle\Tests\Resources\Entity\DummyEntity")
     * @MapTo("keyname")
     */
    public $property3;

    /**
     * @var DummyEntity
     *
     * @Assert\All(
     *    @Assert\Type("Chaplean\Bundle\DtoHandlerBundle\Tests\Resources\Entity\DummyEntity")
     * )
     */
    public $property4;
}

4. 版本控制

dto-handler-bundle 遵循 语义版本控制。简而言之,方案是 MAJOR.MINOR.PATCH,其中

  1. MAJOR 在有破坏性更改时增加,
  2. MINOR 在向后兼容的方式添加新功能时增加,
  3. PATCH 在向后兼容的方式修复错误时增加。

低于 1.0.0 的版本被视为实验性的,任何时间都可能发生破坏性更改。

5. 贡献

欢迎贡献力量!有很多种贡献方式,我们非常感激所有贡献。以下是其中的一些主要方式:

  • 错误报告:虽然我们努力打造高质量的软件,但错误仍然可能发生,我们无法修复我们不知道的问题。所以即使您不确定或者只是想提问,也请提交报告。任何问题都可能表明文档仍有改进空间!
  • 功能请求:当前API没有涵盖您的用例?希望提出建议或添加功能?我们很高兴阅读您的建议,并开始讨论以寻找最佳解决方案。
  • 拉取请求:希望贡献代码或文档?我们非常欢迎!如果您需要帮助开始,可以查看GitHub上的拉取请求文档。我们使用“分叉并拉取模型”,即贡献者将更改推送到他们的个人分叉,然后创建拉取请求到主仓库。请将您的拉取请求针对master分支。

提醒一下,所有贡献者都应遵守我们的行为准则

6. 破坏性测试

在破坏性测试此项目时,您可能会发现以下命令很有用。

# Install dependencies
composer install

# Run tests
bin/phpunit

7. 许可证

dto-handler-bundle是在MIT许可证的条款下分发的。

有关详细信息,请参阅LICENSE