Heim  >  Artikel  >  Backend-Entwicklung  >  Über Container, Befehlsbus, Ereignis in Laravel5

Über Container, Befehlsbus, Ereignis in Laravel5

WBOY
WBOYOriginal
2016-08-08 09:24:431689Durchsuche
Über die Bindungsmethode:
- Diese beiden Bindungen sind gleich und beide geben eine neue zurück, wenn $app->make() Beispiel
 
        $this->app->bind('App\DAO\UserDAO',function(){
        return new UserDAOImpl();
        });
        
        $this->app->bind('App\DAO\UserDAO','App\DAO\Impl\UserDAOImpl');

- bind kann auch einen Alias ​​festlegen, wie folgt: Der erste Parameter wird an das Array übergeben, der Schlüssel ist der Alias ​​und der Wert ist der Schnittstellenname
$this->app->bind(['dao.user' => 'App\DAO\UserDAO'],'App\DAO\Impl\UserDAOImpl');

- Der dritte Parameter ist wahr, was bedeutet, dass die Wirkung von Singleton dieselbe ist

$this->app->bind(['dao.user' => 'App\DAO\UserDAO'],'App\DAO\Impl\UserDAOImpl', true);

Befehlsbus
ist im Wesentlichen eine Sammlung von Aufrufen verwandter Methoden
- erzeugt einen Befehl
 php artisan make:command FirstCommand

Zu diesem Zeitpunkt wird eine FirstCommand-Klasse unter appCommands erstellt. Die Handle-Methode ist der spezifische Ausführungsinhalt.
- Call Command
, um die Dispatch-Methode im Controller wie folgt aufzurufen. Der Standard-Controller verfügt über `Trait DispatchesCommands`, also über die Dispatch-Methode. Wenn der folgende Befehl im Controller ausgeführt wird, wird der Inhalt in FirstCommand::handle() ausgeführt
 $this->dispatch(new FirstCommand());

- Queue Command
php artisan make:command PurchasePodcast --queued
Dieser`--queued` Parameter fügt die `IlluminateContractsQueueShouldBeQueued` Schnittstelle und die `SerializesModels hinzu ` Merkmal. Diese Schnittstelle hat keine Methoden, nur eine Markierung (instanceof).
- Pipeline-Befehl (TODO)
Ereignisereignis
- Ereignisklasse
in `EventServiceProvider`Fügen Sie den Ereignisnamen und den Namen des Handlers zum Listen-Attribut hinzu, zum Beispiel:
    protected $listen = [
        'App\Events\FirstEvent' => [
            'App\Handlers\Events\FirstEventHandler',
        ],
    ];
Führen Sie den Befehl
`php artisan event:generate` Der Inhalt in $listen generiert entsprechende Dateien und überschreibt keine bereits generierten Dateien. -
Verarbeitung von EreignissenDie Ereignisregistrierung wird im Boot in `EventServiceProvider`
abgeschlossen. Die Handle-Methode in Hanlder akzeptiert einen FirstEvent-Parameter und Handle ist die Verarbeitungsmethode. -
Trigger-Ereignis
 <span style="white-space:pre">	</span>\Event::fire(new FirstEvent()); 
        //or use the helper function
        event(new FirstEvent());
-
Warteschlangenereignis plus `IlluminateContractsQueueShouldBeQueued`
Nur Markieren Sie es. Verwenden Sie gleichzeitig die Eigenschaft `IlluminateQueueInteractsWithQueue` und andere Methoden, um Aufgaben zu löschen, zurückzusetzen usw. während der Ereignisverarbeitung. -
Abonnent
    $this->release(30);
    $this->delete(); 
Ein Abonnent ist im Wesentlichen ein Handler und muss die subscribe($event)-Methode implementieren.

Wie abonniere ich?

Fertig.
    class ThirdEventHandler {
    
        /**
         * Create the event handler.
         *
         * @return void
         */
        public function __construct()
        {
            //
        }
    
        public function doSomething(){
            echo " ThirdEventHalder !!!..";
        }
    
        public function doSomethingToo(){
            echo "lalala, ThirdEventHalder again!!!..";
        }
    
        /**
         * 注册监听器给订阅者。
         *
         * @param  Illuminate\Events\Dispatcher  $events
         * @return array
         */
        public function subscribe($events)
        {
            $events->listen('App\Events\FirstEvent', 'App\Handlers\Events\ThirdEventHandler@doSomething');
    
            $events->listen('App\Events\FirstEvent', 'App\Handlers\Events\ThirdEventHandler@doSomethingToo');
        }
    
    }
Ein Ereignis kann mehreren Handlern entsprechen und die Ausführungsreihenfolge der Handler stimmt mit der verbindlichen Reihenfolge überein.
Ein Abonnent kann mehrere Ereignisse binden
Das Obige stellt den Container, den Befehlsbus und das Ereignis in Laravel5 vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.
    $subscriber = new App\Handlers\Events\ThirdEventHandler();
    Event::subscribe($subscriber);
    // or rely on IoC
    Event::subscribe('App\Handlers\Events\ThirdEventHandler');


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn