定制 sinersis/simple-dto 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sinersis/simple-dto

Composer 安装命令:

composer require sinersis/simple-dto

包简介

README 文档

README

Этот пакет предоставляет простую реализацию Data Transfer Object (DTO) для PHP, позволяющую автоматически преобразовывать вложенные массивы в DTO-объекты. Основные возможности:

  • Автоматический кастинг вложенных DTO по типизации: Если свойство имеет тип, являющийся подклассом BaseDTO, и переданы данные в виде массива, то происходит автоматическое преобразование в DTO.
  • Явный кастинг через атрибуты: Для свойств, представляющих массивы вложенных DTO, можно использовать атрибут [Cast] с флагом isArray.

Установка

Добавьте пакет в ваш проект через Composer:

composer require sinersis/simple-dto

Применение

<?php
namespace SimleDto\DTO;

use SimleDto\BaseDTO;
use SimleDto\Attributes\Cast;

class UserDTO extends BaseDTO
{
    public string $name;

    /**
    * Автоматический кастинг по типизации: 
    * если данные представлены в виде массива, 
    * будет создан объект AddressDTO
    */
    public AddressDTO $address;

    /**
    * Для массива вложенных объектов используем атрибут Cast
    */
    #[Cast(AddressDTO::class, true)]
    public array $addresses;
}

class AddressDTO extends BaseDTO
{
    public string $city;
    public string $street;
}

$data = [
    'name' => 'Ivan',
    'address' => [
        'city' => 'Moscow',
        'street' => 'Lenina'
    ],
    'addresses' => [
        [
            'city' => 'Moscow',
            'street' => 'Lenina'
        ],
        [
            'city' => 'Saint-Petersburg',
            'street' => 'Nevsky'
        ]
    ]
];

$user = new UserDTO($data);

echo $user->name;            // Выведет: Ivan
echo $user->address->city;   // Выведет: Moscow

foreach ($user->addresses as $address) {
    echo $address->city . PHP_EOL;
}

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-02-15