IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

https://laracasts.com/lessons/laravel-5-commands

https://laravel.com/docs/master/queues
https://laracasts.com/series/whip-monstrous-code-into-shape/episodes/2
https://laracasts.com/series/commands-and-domain-events (screencast versió 4)

Conceptes

Llegiu article Command prèviament per saber que és una comanda, un command handler i command bus

Nota important

El en cas de Laravel a la versió 5.0 existia Command Bus

https://laravel.com/docs/5.0/bus

En canvi en la versió 5.1 no ho trobareu. Això no vol dir però que no s'utilitzi/es pugui utilitzar simplement el sistema ara simplement té:

Laravel Jobs o Laravel Queues : https://laravel.com/docs/master/queues
Laravel events per a més informació sobre els esdeveniments. De fet els handlers dels esdeveniments es poden executar en segon terme molt 
fàcilment

Des de la versió 5.2 com podeu veure a la Upgrade guide https://laravel.com/docs/master/upgrade:

Commands And Handlers

Self-Handling Commands

You no longer need to implement the SelfHandling contract on your jobs / commands. All jobs are now self-handling by default, so you can  
remove this interface from your classes.

Separate Commands & Handlers

The Laravel 5.2 command bus now only supports self-handling commands and no longer supports separate commands and handlers.

If you would like to continue using separate commands and handlers, you may install a Laravel Collective package which provides backwards-
compatible support for this: https://github.com/LaravelCollective/bus

És a dir que el sistema de Laravel no separa la comanda en si del handler o listener i són el mateix?

Introducció

Les comandes són utilitzades sovint com una forma de separar els aspectes tècnics del User input del seu sentit dins de l'aplicació. En llenguatges orientats a objectes una comanda acaba sent un objecte (com no? ;-)). Un comanda acaba sent una classe que indica el comportament d'un usuari

Exemples de comandes poden ser:

StartDiscussion, SortList, SignUp, etc. 

Vegem un exemple amb SignUp:

class SignUp
{
    private $emailAddress;
    private $password;

    public function __construct($emailAddress, $password)
    {
        $this->emailAddress = $emailAddress;
        $this->password = $password;
    }
}

I al controlador executem la comanda:

class UserController
{
    public function signUpAction(Request $request)
    {
        $command = new SignUp(
            $request->request->get('emailAddress'),
            $request->request->get('password')
        );

        ...
    }
}

Utilitzant un framework podem tenir un Command Bus que gestioni les comandes i un codi similar a:

$this->commandBus()->handle($command);

Resources:

Tutorials i screencasts externs

Vegeu també

Enllaços externs