juststeveking/laravel-data-object-tools
Composer 安装命令:
composer require juststeveking/laravel-data-object-tools
包简介
A set of tools to make working with Data Transfer Objects easier in Laravel
README 文档
README
This package is aimed to be a suite of tools to help working with DTOs even easier. It includes an artisan command to generate DTOs as well as a facade to help you hydrate them.
Installation
composer require juststeveking/laravel-data-object-tools
Usage
To generate a new DTO all you need to do is run the following artisan command:
php artisan make:dto MyDto
This will generate the following class: app/DataObjects/MyDto.php. By default this class
will be a final class that implements a DataObjectContract which enforces a method toArray so that you can
easily cast your DTOs to arrays.
If you are using PHP 8.2 however, you will by default get a readonly class generated, so that you do not have
to declare each property as readonly.
To work with the hydration functionality you can either use Laravels DI container, or the ready made facade.
Using the container:
class StoreController { public function __construct( private readonly HydratorContract $hydrator, ) {} public function __invoke(StoreRequest $request) { $model = Model::query()->create( attributes: $this->hydrator->fill( class: ModelObject::class, parameters: $request->validated(), )->toArray(), ); } }
To work with the facade, you can do something very similar:
class StoreController { public function __invoke(StoreRequest $request) { $model = Model::query()->create( attributes: Hydrator::fill( class: ModelObject::class, parameters: $request->validated(), )->toArray(), ); } }
Object Hydration
Under the hood this package uses an EventSauce package, created by Frank de Jonge. It is possibly the best package I have found to hydrate objects nicely in PHP. You can find the documentation here if you would like to see what else you are able to do with the package to suit your needs.
Testing
To run the test suite:
composer run test
Credits
LICENSE
The MIT License (MIT). Please see License File for more information.
juststeveking/laravel-data-object-tools 适用场景与选型建议
juststeveking/laravel-data-object-tools 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 14.4k 次下载、GitHub Stars 达 67, 最近一次更新时间为 2022 年 07 月 27 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 juststeveking/laravel-data-object-tools 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 juststeveking/laravel-data-object-tools 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 14.4k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 67
- 点击次数: 16
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-07-27