Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти
Інше
Події Про нас

Laravel Actions

lorisleiva/laravel-actions
v2.10.1 13 2,858 8.7M 19 березня 2026 4
На GitHub

Laravel-компоненти, які виконують одну специфічну задачу, забезпечуючи чистоту архітектури та організацію коду на основі принципу Single Responsibility.

README

⚡️ Laravel Actions

Latest Version on Packagist GitHub Tests Action Status Total Downloads

hero

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 applications provide.

Instead of creating controllers, jobs, listeners and so on, it allows you to create a PHP class that handles a specific task and run that class as anything you want.

Therefore it encourages you to switch your focus from:

"What controllers do I need?", "should I make a FormRequest for this?", "should this run asynchronously in a job instead?", etc.

to:

"What does my application actually do?"

Installation

composer require lorisleiva/laravel-actions

Documentation

:books: Read the full documentation at laravelactions.com

Basic usage

Create your first action using php artisan make:action PublishANewArticle and define the asX methods when you want your action to be running as X. E.g. asController, asJob, asListener and/or 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,
        );
    }
}

As an object

Now, you can run your action as an object by using the run method like so:

PublishANewArticle::run($author, 'My title', 'My content');

As a controller

Simply register your action as an invokable controller in a routes file.

Route::post('articles', PublishANewArticle::class)->middleware('auth');

As a listener

Simply register your action as a listener of the NewProductReleased event.

Event::listen(NewProductReleased::class, PublishANewArticle::class);

Then, the asListener method of your action will be called whenever the NewProductReleased event is dispatched.

event(new NewProductReleased($manager, 'Product title', 'Product description'));

And more...

On top of running your actions as objects, controllers and listeners, Laravel Actions also supports jobs, commands and even mocking your actions in tests.

📚 Check out the full documentation to learn everything that Laravel Actions has to offer.

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Схожі пакети

Laravel Modules

nwidart/laravel-modules

Пакет для управління модулями у Laravel, що дозволяє організовувати код у самостійні, модульні компоненти зі своєю структурою.

6,157 v13.0.0 6

Tenancy

archtechx/tenancy

Автоматична багатотенантність для вашої Laravel-програми.

4,365 v3.10.0 13 4

Laravel Enum

bensampo/laravel-enum

Простий, розширюваний і потужний реалізація перерахування для Laravel.

2,029 v6.14.0 13 11

Laravel Multitenancy

spatie/laravel-multitenancy

Перетворіть вашу Laravel-програму на мультитенантну архітектуру, що дозволяє обслуговувати кількох користувачів (тенантів) в одному застосунку.

1,348 4.1.3 13 6

Modular

internachi/modular

Пакет для модуляризації Laravel додатків, дозволяє організувати код в окремі модулі для кращої структури та підтримки проекту.

1,184 3.0.2 14 8

Laravel Brain

laramint/laravel-brain

Візуалізуй життєцикл запиту Laravel у вигляді інтерактивного графіка.

815 v2.3.1 13 6