lorisleiva / laravel-actions
Laravel 组件,专门处理特定任务
v2.8.4
2024-09-10 09:57 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0|^11.0
- lorisleiva/lody: ^0.5
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^1.23|^2.34
- phpunit/phpunit: ^9.6|^10.0
- dev-main
- v2.8.4
- v2.8.3
- v2.8.2
- v2.8.1
- v2.8.0
- v2.7.3
- v2.7.2
- v2.7.1
- v2.7.0
- v2.6.0
- v2.5.1
- v2.5.0
- v2.4.3
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.0
- v2.3.0-beta.2
- v2.3.0-beta
- v2.2.0
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- 1.x-dev
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.3.0
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-loris/support-php82
- dev-loris/drop-l8
- dev-loris/fix-ci
- dev-loris/fix-207
- dev-loris/fix-199-again
- dev-add-tests-for-windows
- dev-fix-157
- dev-fix-142
- dev-feature/laravel-9-upgrade
- dev-feature/support-controllers-with-explicit-methods
- dev-feature/with-attributes
This package is auto-updated.
Last update: 2024-09-10 09:58:03 UTC
README
⚡ 处理特定任务的类。
此包通过专注于应用程序提供的行为,引入了一种组织 Laravel 应用程序逻辑的新方式。
而不是创建控制器、作业、监听器等,它允许您创建一个处理特定任务的 PHP 类,并将其作为您想要的任何内容运行。
因此,它鼓励您将重点从
"我需要哪些控制器?","我应该为这个创建一个 FormRequest 吗?","这个应该在一个作业中异步运行吗?"等等。
转向
"我的应用程序实际上做什么?"
安装
composer require lorisleiva/laravel-actions
文档
📚 在 laravelactions.com 读取完整文档
基本用法
使用 php artisan make:action PublishANewArticle
创建您的第一个操作,并在需要将操作作为 X
运行时定义 asX
方法。例如,asController
、asJob
、asListener
和/或 asCommand
。
class PublishANewArticle { use AsAction; public function handle(User $author, string $title, string $body): Article { return $author->articles()->create([ 'title' => $title, 'body' => $body, ]); } public function asController(Request $request): ArticleResource { $article = $this->handle( $request->user(), $request->get('title'), $request->get('body'), ); return new ArticleResource($article); } public function asListener(NewProductReleased $event): void { $this->handle( $event->product->manager, $event->product->name . ' Released!', $event->product->description, ); } }
作为对象
现在,您可以通过使用 run
方法将其作为对象运行您的操作,如下所示
PublishANewArticle::run($author, 'My title', 'My content');
作为控制器
只需在路由文件中将您的操作注册为可调用的控制器。
Route::post('articles', PublishANewArticle::class)->middleware('auth');
作为监听器
只需将您的操作注册为 NewProductReleased
事件的监听器。
Event::listen(NewProductReleased::class, PublishANewArticle::class);
然后,每当分发 NewProductReleased
事件时,您的操作的 asListener
方法将被调用。
event(new NewProductReleased($manager, 'Product title', 'Product description'));
等等...
除了将操作作为对象、控制器和监听器运行之外,Laravel Actions 还支持作业、命令,甚至可以在测试中模拟操作。