emsifa / evo
革新您编写Laravel代码的方式
v0.4.6
2021-10-11 14:22 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^8.37
- illuminate/http: ^8.49
- illuminate/support: ^8.49
- illuminate/validation: ^8.49
- spatie/laravel-package-tools: ^1.4.3
Requires (Dev)
- brianium/paratest: ^6.2
- dms/phpunit-arraysubset-asserts: ^0.3.0
- nunomaduro/collision: ^5.3
- orchestra/testbench: ^6.15
- php-coveralls/php-coveralls: ^2.4
- phpunit/phpunit: ^9.3
- spatie/laravel-ray: ^1.9
- vimeo/psalm: ^4.4
README
Evo是一个利用PHP 8特性的Laravel包。它改变了您编写Laravel应用的方式,使其变为这样
#[RoutePrefix('users')] class UserController extends Controller { #[Get] public function index( #[Query] int $limit, #[Query] int $offset, #[Query('q')] string $keyword, ): UserPaginationResponse { // your logic goes here } #[Post] public function store( #[Body] CreateUserDto $data ): StoreUserResponse { // your logic goes here } #[Put('{id}')] public function update( #[Param] int $id, #[Body] UpdateUserDto $data, ): UpdateUserResponse { // your logic goes here } }
动机
在函数头部定义输入和输出类型将激发您的头脑在编写逻辑之前指定输入和输出类型。因此,当编写逻辑时,您确切地知道您拥有什么,它来自哪里,以及要返回什么。
此外,通过这种方式定义输入和输出类型,您和您的团队成员不仅能够轻松地阅读规范,机器也可以。这就是为什么Evo可以提供一些惊人的功能,如自动验证、自动转换、实时Swagger文档、模拟API等。
功能
- 使用属性注册路由。
- 使用属性应用中间件。
- 使用属性进行路由前缀。
- 使用属性将请求数据(Header、Param、Cookie、Body、Query)注入到参数中。
- 自动类型转换。
- 自动类型验证。
- 使用属性在DTO属性中直接定义验证规则。
- 自定义值转换器。
- 生成DTO文件。
- 生成响应文件。
- 生成Swagger UI和OpenAPI文件。
- 模拟API。
安装
Evo目前仍在开发中,在最终发布之前可能会有些破坏性更改。
您可以通过composer安装此包
composer require emsifa/evo:dev-main
文档
请参阅https://www.emsifa.com/evo。
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请审查我们的安全策略,了解如何报告安全漏洞。
鸣谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。