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

Über Container, Befehlsbus, Ereignis in Laravel5

WBOY
Freigeben: 2016-08-08 09:24:43
Original
1711 Leute haben es durchsucht
Ü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');
Nach dem Login kopieren

- 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');
Nach dem Login kopieren

- 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);
Nach dem Login kopieren

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

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());
Nach dem Login kopieren

- 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',
        ],
    ];
Nach dem Login kopieren
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());
Nach dem Login kopieren
-
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(); 
Nach dem Login kopieren
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');
        }
    
    }
Nach dem Login kopieren
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');
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage