Description
Classes that take care of one specific task. This package introduces a new way of organising the logic of your Laravel applications by focusing on the actions your application provide.
You can organise these actions however you want. Personally, I like to place these under an app/Actions folder or — if my app is separated into modules — under app/MyModule/Actions.
namespace App\Authentication\Actions; class UpdateUserPassword{ public function handle(User $user, string $newPassword): void { $user->password = Hash::make($newPassword); $user->save(); }}
Next, add the AsAction trait to your class. This will enable you to use this class as an object, a controller, a job, a listener, a command and even as a fake instance for testing and mocking purposes.
namespace App\Authentication\Actions; use Lorisleiva\Actions\Concerns\AsAction; class UpdateUserPassword{ use AsAction; public function handle(User $user, string $newPassword): void { $user->password = Hash::make($newPassword); $user->save(); }}
The AsAction trait provides a couple of methods that help you resolve the class from the container and execute it.
// Equivalent to "app(UpdateUserPassword::class)".UpdateUserPassword::make(); // Equivalent to "UpdateUserPassword::make()->handle($user, 'secret')".UpdateUserPassword::run($user, 'secret');
Recent Courses on Laravel Daily
[NEW] NativePHP Mobile v4 with SuperNative: Mini-Course
5 lessons
18 min
Testing in Laravel 13 For Beginners
26 lessons
1 h 41 min read
Laravel 13 Eloquent: Expert Level
41 lessons
1 h 34 min