Laravel の Event クラスを使って処理をまとめてみる
Laravel の Event
クラスは、任意の Event
を発行できます。今回はメール送信処理をまとめてみましょう。
- 参考
- イベント
まずは Event::fire
でイベントを発行します。
<?php public function postRegister() { // ユーザ登録 ……… // メール送信 Event::fire('emails.user.register', ['件名', 'fromメールアドレス', 'toメールアドレス', ['データ']]); }
この例では、ユーザー登録後、emails.user.register
というイベントを発行しています。
そしてイベントの受け取りは以下のようになります。
<?php // app/start/global.php Event::listen('emails.*', function($subject, $from, $to, $data) { Mail::pretend(); // デバッグ用 Mail::send(Event::firing(), $data, function($message) use ($from, $to, $subject) { $message->from($from)->to($to)->subject($subject); }); });
Event::listen
の第一引数の emails.*
はワイルドカードリスナーといって emails.
以降のどんな文字列のイベントが発行されても受け取ることができます。
そして、Mail::send
の第一引数である Event::firing
は発行されたイベントの文字列が取得できます(この場合は emails.user.register)。
今回は、イベント発行の文字列とメールテンプレート(app/views/emails/user/register.blade.php)の場所を一致させることによってメール送信処理をこのようにまとめてみました。
こちらからは以上です。