irealworlds/laravel-attribute-requests

此包的最新版本(v0.0.2)没有提供许可证信息。

v0.0.2 2023-06-29 20:18 UTC

This package is auto-updated.

Last update: 2024-09-29 23:20:55 UTC


README

Tests StyleCI Packagist Version)

关于

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 了解您期望的属性类型,使其在开发过程中提供帮助,并使重构更加容易。

文档

您可以在包的维基页面上阅读完整的文档:包的维基页面