frictionlessdigital / actions
Frictionless Solutions | Actions
11.0.0
2024-03-13 15:22 UTC
Requires
- php: ^8.2
- illuminate/support: ^11.0
- lorisleiva/laravel-actions: ^2.0
Requires (Dev)
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^10.0
README
基于杰出的Loris Leiva Actions for Laravel,此包只是添加了一些方法以便使用糖语法包装。
这是针对10.x及以上版本,它与1.x版本不直接兼容。
安装
composer require frictionlessdigital/actions
请注意,包的根命名空间为Fls
,而不是Frictionlessditial
。
配置
此包不需要配置。
使用
在此处阅读基本文档:Laravel Actions
Action::tap($value, $closure)
受保护的方法与tap()
类似:在将其传递给$closure
之后返回$value
。
return $this->tap(User::first(), fn(User $user) => $user->delete());
等价于
$user = User::first(); $user->delete(); return $user; // $user;
Action::pipe($value, $closure)
类似于pipe()
,此受保护的方法将在运行$closure
后返回结果$value
;闭包可以自由修改$value
。
return $this->pipe(User::first(), fn($user) => $user->delete());
等价于
$user = User::first(); return $user->delete(); // true;
Action::validated()
这是validateAttributes()
的别名 - 返回通过rules()
验证的属性数组。
use Fls\Actions\Action; class UserAction extends Action { public function rules() { return [ 'name' => ['required', 'string'], 'email' => ['required', 'email'], 'notes' => ['nullable', 'string'], ]; } ... public function handle($attributes) { return $this->fill($attributes)->validated(); } } UserAction::run([ 'name' => 'John', 'email' => 'john@smith.com', ]); // ['name' => 'John', 'email' => 'john@smith.com']
Action::validate()
此方法将验证属性,如果数据无效则抛出异常,但返回值是类本身;这对于链式调用很有用。
use Fls\Actions\Action; class UserAction extends Action { ... public function handle(User $user, $attributes) { return $this->fill($attributes) ->validate() ->tap($user, fn(User $user) => $user->update($this->validated())); } }
如果需要在链式调用另一个操作之前确保验证完成,则可能很有用。
Action::runInTransaction(...$attributes)
此方法将操作包装在数据库事务中。
use Fls\Actions\Action; use App\User; class CreateUserAction extends Action { public function handle(User $user, $attributes) { return $user->create($attributes); } }
可以使用run
和runInTransaction
类似地执行。在后一种情况下,操作将在DB::transaction
内部执行。返回值将在这两者之间匹配。
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
测试
$ composer test
贡献
请参阅CONTRIBUTING和CODE_OF_CONDUCT以获取详细信息。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件support@frictionlesssolutions.com联系,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。