Norway


Sometimes it can seem like a lot of work to create an , create its handler, and bind the two. Create a command, create its handler, bind the two. I’ve often wished for a workflow that handled the whole process together in one.

The artisan commands for commands and are a good startR;they both create their own entity and (optionally) its handler. But you still can spend an hour writing the command and handler, and then waste another 15 minutes trying to figure out why it’s not working, only to realize you never actually bound the two together.

Enter event:generate

Well, dear reader, your white-knuckled wait is finally over. In 5, you can bind (non-existent) events and handlers in the EventServiceProvider, run php artisan event:generate, and Artisan will automatically generate the files for you–both for the Event and its Handler.

Make it happen

Check out our events and handlers directories before:

app/
    Events/
        Event.php
    Handlers/
        Events/

1) Open app/providers/EventServiceProvider.php. Find the $listen property, which is where you would normally bind your events, and add one in the following format:

    protected $listen = [
        DidSomethingEvent::class => [
            RespondOneWay::class,
            RespondAnotherWay::class
        ]
    ];

2) Run php artisan event:generate

3) Profit.

Check it out.

app/
    Events/
        Event.php
        DidSomethingEvent.php
    Handlers/
        Events/
            RespondOneWay.php
            RespondAnotherWay.php

Created. Bound. to go. Even typehinted:

<?php namespace AppHandlersEvents;
...
class RespondOneWay {
    ...
    public function handle(DidSomethingEvent $event)
    {
    }
}

That was easy, right?

Yah, that’s it. You can now your eventing system abstractly–you could plan the entire thing without writing a single command or handler. And once you’re ready to go, generate all of your events and handlers in a single command.



Source link

LEAVE A REPLY

Please enter your comment!
Please enter your name here