Ü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 --queuedDieser
`--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 Ereignissen
Die 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');