[扩展推荐] Laravel Actions 一种新的业务逻辑组织方式
Laravel Actions 是 Loris Leiva 开发的一个扩展包,它通过作用于你的 Laravel 项目的方法,提供了一个新的业务逻辑组织方式。
与 VueJS 组件将 HTML ,JavaScript 和 CSS 重新组合在一起类似,Laravel Actions 将任务的授权,验证和执行重新组合在一起。并且可以通过 可调用的控制器 、普通对象、任务调度 和 事件监听器 等方式使用。
以下是该扩展包 README 中提供的基础示例:
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());
}
}
然后,您可以通过各种方式使用这些操作,例如普通对象,事务调度或事件监听:
// 普通对象
$action = new PublishANewArticle([
'title' => 'My blog post',
'body' => 'Lorem ipsum.',
]);
$article = $action->run();
// 事务调度
PublishANewArticle::dispatch([
'title' => 'My blog post',
'body' => 'Lorem ipsum.',
]);
// 事件监听
class 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.
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
比较实用,封装比较细化的重复功能会有奇效
哎,,我发现我们项目组真的是为了用laravel而用laravel ,,很多laravel的高级特性都没用,而且,组里的leader和组员也不愿意学习新的特性