laravel5.1イベント

WBOY
リリース: 2016-06-23 13:28:42
オリジナル
1035 人が閲覧しました

Laravel イベント

今日は Laravel のイベントドライバーを勉強しましたが、とても便利ですよ〜一緒に楽しみましょう〜
ここでは簡単な使用方法だけを紹介します〜 キュードライバーとブロードキャスト配信については後ほど勉強します。これらは使用されています

はじめに

Laravelのイベントはいくつかの簡単なオブザーバークラスの実践を提供し、いくつかのイベントを登録したり、これらのイベントをリッスンするためにいくつかのイベントリスナーを登録したりすることができます

特定のイベントをトリガーすると、対応するリスナーがトリガーされます。ハンドルメソッド。ここで、対応するビジネス ロジックをいくつか処理できます。

Registration

laravel は、イベント登録とイベント リスナー登録を生成する便利なメカニズムを提供し、EventServiceProvider クラスのキーと値のペアの形式でイベントとイベント リスナーを登録できるようにします。

        /**         * The event listener mappings for the application.         *         * @var array         */        protected $listen = [            'App\Events\UserLoginEvent' => [                'App\Listeners\UserLoginEventListener',             ],            'App\Events\ManagerCreateEvent'=>[                'App\Listeners\ManagerCreateEventListener',                'App\Listeners\SomeOtherEventListener',            ]        ];  
ログイン後にコピー

上記のコードは、という名前のファイルを登録します。 UserLoginEvent イベントと UserLoginEventListener という名前の UserLoginEvent イベント リスナー、ManagerCreateEvent イベント、および ManagerCreateEvent イベントをリッスンする 2 つのリスナー: ManagerCreateEventListener と SomeOtherEventListener

さて、基本的なイベントとリスナーの登録は完了しましたが、まだクラスは登録されていませんが開発されている場合は、強力な職人を通じて生成しましょう:

    php artisan event:generate
ログイン後にコピー

対応する登録クラスはコマンドを通じて対応するファイルに生成され、イベントは AppEvents ディレクトリに生成され、リスナーは AppListeners に生成されます

これ次のディレクトリ構造情報を見つける方法:

    app\        Events\                UserLoginEvent.php                ManagerCreateEvent.php        Listeners\                ManagerCreateEventListener.php                SomeOtherEventListener.php  # 比如邮件推送
ログイン後にコピー

生成されたイベント クラスでは、対応する依存関係を __constrcut コンストラクターに挿入したり、イベント クラスがトリガーされたとき (__constrct の後) に何らかのビジネス処理を実行したりできます。対応するリスナーが順番にハンドル関数をトリガーします

トリガー

イベントをトリガーする方法は非常に簡単で、対応するイベントをトリガーする必要がある場所でトリガー操作を実行するだけです

     Event::fire(new ManagerCreateEvent($manager));     # or     event(new ManagerCreateEvent($manager));
ログイン後にコピー

イベントトリガーの順序は次のとおりです次のように:

    ManagerCreateEvent: __construct    ManagerCreateEventListener: handle    SomeOtherEventListener: handle
ログイン後にコピー

このプロセス中にリスニングを終了できます。たとえば、managerCreateEventListener のハンドル メソッドで false を返すと、次の SomeOtherEventListener はリスニング操作をトリガーしなくなります。

Subscribe フォロー/サブスクライブイベント

LaravelのSubscribeメカニズムを使用すると、リスナークラスにsubscribeメソッドを実装している限り、イベントリスナー独自のクラスで複数のイベントをリッスンできます。例:

phpclass UserEventHandler {    /**     * 处理用户登录事件。     */    public function onUserLogin($event)    {        //    }    /**     * 处理用户注销事件。     */    public function onUserLogout($event)    {        //    }    /**     * 注册监听器给订阅者。     *     * @param  Illuminate\Events\Dispatcher  $events     * @return array     */    public function subscribe($events)    {        $events->listen('App\Events\UserLoggedIn', 'UserEventHandler@onUserLogin');        $events->listen('App\Events\UserLoggedOut', 'UserEventHandler@onUserLogout');    }}
ログイン後にコピー

上記のUserEventHandleクラスはリッスンします。 UserLoggedIn と UserLoggedOut という 2 つの異なるイベント クラスは、UserLoggendIn または UserLoggedOut がトリガーされると、対応する listen メソッドを自動的にトリガーします。

クラスとリッスンメソッドを定義するだけでは不十分です。EventServiceProvider に追加してリスナーを登録する必要があることをシステムに伝える必要があります。

protected $subscribe = [        'App\Handlers\Events\UserEventHandler',    ];
ログイン後にコピー

実行順序では、laravel が最初にイベントリスナーを実行します。 Listen で、subscribe メソッド Listener を実行します

^_^

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート