Laravel Actions 包
发布日期 作者 Paul Redmond
Laravel Actions 是 Loris Leiva 开发的一个包,它通过专注于应用程序提供的操作来引入了一种组织 Laravel 应用程序逻辑的新方法。
类似于 VueJS 组件如何将 HTML、JavaScript 和 CSS 组合在一起,Laravel Actions 将授权、验证和任务执行组合在一个类中,该类可以用作**可调用控制器**、**普通对象**、**可调度作业**和**事件监听器**。
以下来自 自述文件 的示例展示了该包中操作类的一个基本概念。
class PublishANewArticle extends Action{ public function authorize() { return $this->user()->hasRole('author'); } public function rules() { return [ 'title' => 'required', 'body' => 'required|min:10', ]; } public function handle() { return Article::create($this->validated()); }}
然后,您可以以多种方式使用这些操作,例如作为普通对象、可调度作业或事件监听器。
// Plain Object$action = new PublishANewArticle([ 'title' => 'My blog post', 'body' => 'Lorem ipsum.',]); $article = $action->run(); // Dispatchable JobPublishANewArticle::dispatch([ 'title' => 'My blog post', 'body' => 'Lorem ipsum.',]); // An event listenerclass ProductCreated{ public $title; public $body; public function __construct($title, $body) { $this->title = $title; $this->body = $body; }} Event::listen(ProductCreated::class, PublishANewArticle::class); event(new ProductCreated('My new SaaS application', 'Lorem Ipsum.'));
要了解有关该包的完整功能的更多信息,包括源代码、文档和示例,请查看 GitHub 上的项目:lorisleiva/laravel-actions。