irealworlds / laravel-attribute-requests
此包的最新版本(v0.0.2)没有提供许可证信息。
v0.0.2
2023-06-29 20:18 UTC
Requires
- illuminate/contracts: ^10
- illuminate/http: ^10
- illuminate/support: ^10
- illuminate/validation: ^10
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^8.5
- pestphp/pest: ^2.8
- pestphp/pest-plugin-faker: ^2.0
This package is auto-updated.
Last update: 2024-09-29 23:20:55 UTC
README
关于
Laravel 属性请求包通过引入数据传输对象(DTO)的概念,简化了处理和验证传入请求的过程。使用此包,您可以使用属性定义请求 DTO,从而更容易进行验证和处理输入。
在消费和验证请求时,您可以直接使用数组和魔术字符串,而不是为每个特定请求定义专门的 DTO 类,封装所有相关的输入字段和验证规则。这种方法有助于提高代码库的可维护性、可读性和可测试性,同时也有助于开发,帮助 IDE 在开发过程中提供有用的提示。
这样,您就可以利用 PHP 的类型提示功能强制每个属性的类型,防止潜在的类型相关错误。此外,您可以使用 PHP 属性和 Laravel 内置的以及自定义的验证规则明确地应用验证。
安装
您可以通过 composer 使用 require 命令添加此包
composer require irealworlds/laravel-attribute-requests
如果您想修改配置文件,您可以使用 vendor:publish
命令先发布它
php artisan vendor:publish --tag=configuration --provider=AttributeRequestServiceProvider
示例用法
定义请求就像创建一个类并装饰其属性进行验证一样简单。例如
use Ireal\AttributeRequests\Http\Request; class PostStoreRequest extends Request { public string $title; public string|null $body; }
然后使用它
public function store(PostStoreRequest $request) { $post = Post::query()->create([ 'title' => $request->title, // IDE knows exactly what type of variable $request->title is here 'body' => $request->body ]); }
尽管使用方法与 Laravel 默认方法类似,但这种方法有一些优点。例如
- 强类型:利用 PHP 的类型提示功能强制每个属性的类型,防止潜在的类型相关错误。
- 自动验证:该包根据定义的 DTO 规则自动验证传入的请求,减少手动验证代码的需求。关于验证的更多信息
- 兼容性:该包旨在与 Laravel 无缝协作,利用其功能和约定。
- IDE 提示:使用此类请求编写方法有助于 IDE 了解您期望的属性类型,使其在开发过程中提供帮助,并使重构更加容易。
文档
您可以在包的维基页面上阅读完整的文档:包的维基页面。