久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

分享個簡單易懂且非常有用的laravel事件

這篇文章主要給大家介紹了一個簡單易懂并且非常有用的laravel事件,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來

前言

在開始本文的正文之前,我們先說一下在什么場景會使用這個事件功能。

事情大概是這樣的,需求要在用戶注冊的時候發一些幫助郵件給用戶(原本用戶在注冊之后已經有發別的郵件的了,短信,IM什么的)

原來這個注冊的方法也就10多行代碼。但是有時候我們為了省事,直接在注冊代碼后面添加了各種代碼。

例如這個注冊方法本來是這樣的

<?php
namespace App\Htt\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
 public function register(Request $request)
 {
  //獲取參數
  //驗證參數
  //寫入數據庫
  //return 注冊信息
  
  
 }
}

現在有一個需求,要求注冊之后給用戶的郵箱發一個廣告,絕大多數的人(也包括以前的我)就直接在這后面接著寫代碼了

<?php
namespace App\Htt\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
 public function register(Request $request)
 {
  //獲取參數
  //驗證參數
  //寫入數據庫
  
  //發送廣告郵件
  //return 注冊信息
  
  
 }
}

這是比較直觀的寫法,后來又有需求要發個短信。

<?php
namespace App\Htt\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
 public function register(Request $request)
 {
  //獲取參數
  //驗證參數
  //寫入數據庫
  
  //發送廣告郵件
  //發送短信
  //return 注冊信息
  
  
 }
}

然后又有需求,要發IM消息,這樣的需求很多。這些方法如果你封裝了,可能也就一行代碼。

但是,在實際項目中,這個注冊方法里面已經加了很多東西。如果多人開發的話各種不方便。然后想到了laravel似乎有這個功能,但是一直都不知道怎么應用,仔細看了一下手冊,發現和自己的想法不謀而合。

laravel的事件功能實際上更傾向是一種管理手段,并不是沒了它我們就做不到了,只是它能讓我們做得更加好,更加優雅。

laravel的事件是一種管理+實現的體現,它首先有一個總的目錄,然后我們可以宏觀的看到所有的事件,而不需要每次都要打開控制器的方法我們才能知道注冊后會發生什么,這一點很重要,非常的方便,我就不按著laravel的順序來講,而是按著實際情況來建立這種關系。

現在我們無非就是要在注冊之后要做一系列的事情,首先得注冊完之后調用一個事件,然后這個事件再做各種各樣的事

<?php
namespace App\Htt\Controllers;

use Illuminate\Http\Request;
//我們先引入一個事件類,名字自定義的,之后再一步一步創建
use App\Events\Register;

class UserController extends Controller
{
 public function register(Request $request)
 {
  //獲取參數
  //驗證參數
  //寫入數據庫
  //觸發事件,以后所有需要注冊后要做的事情,都不需要再這里加代碼了,我們只需要管理事件就好了
  //event方法是laravel自帶方法, $uid是外部參數,看你需要做什么,傳什么參數了。注冊之后肯定有$uid的嘛
  event(new Register($uid));
  //return 注冊信息
  
  
 }
}

找到\app\Providers\EventServiceProvider.php文件。給它添加關系,告訴系統,有人用event()調用了事件之后要被誰監聽得到。

<?php

namespace App\Providers;

use Laravel\Lumen\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
 /**
  * The event listener mappings for the application.
  *
  * @var array
  */
 protected $listen = [
  // 用戶注冊后的事件
  'App\Events\Register' => [
   // 發送廣告郵件
   'App\Listeners\SendAdMail',
   // 發送短信
   'App\Listeners\SendSms',
   // 發送幫助信息
   'App\Listeners\SendHelpInformation',

  ],
 ];
}

這里是注冊事件的入口,相當于一個總目錄,這樣就可以跟注冊代碼解耦了,以后要加東西我們就不需要再去看注冊方法的代碼了

現在注冊完之后會觸發這個App\Events\Register類,然后這個類會被App\Listeners\SendAdMail,App\Listeners\SendSms,App\Listeners\SendHelpInformation監聽得到,我們進入app\Events目錄,創建Register這個類

<?php

namespace App\Events;

class Register
{

 public $uid;

 /**
  * 創建一個新的事件實例.
  *
  * @param Order $order
  * @return void
  */
 public function __construct($uid)
 {
  $this->uid = $uid;
 }
}

這樣就可以了。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

下面小編就為大家分享一篇laravel ORM 只開啟created_at的幾種方法總結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要給大家介紹了如何通過源碼解析Laravel的依賴注入的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關于Laravel中unique和exists驗證規則的優化的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面
最近在使用laravel5.5,利用其實現了一個功能,下面分享給大家,這篇文章主要給大家介紹了關于Laravel 5.5基于內置的Auth模塊如何實現前后臺登陸的相關資料,文中通過示例代碼介紹的非
laravel 的隊列服務對各種不同的后臺隊列服務提供了統一的 API,下面這篇文章通過源碼分析給大家介紹了關于 Laravel 重復執行同一個隊列任務的原因,文中通過示例代碼介紹的非常詳細
這篇文章主要給大家介紹了關于 Laravel Redis 多個進程同時取隊列問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友下面來
主站蜘蛛池模板: 亚洲字幕 | 色一区二区三区 | 成人免费毛片aaaaaa片 | 人人爽人人干 | 日韩在线免费视频 | 欧美日韩精品一区二区 | 日本三级在线视频 | 午夜激情视频在线观看 | 99热1| 懂色av一区二区三区 | 日韩欧美高清 | 免费成年人视频 | 亚洲欧美日韩在线 | 伊人久久网站 | 在线免费毛片 | 午夜精品影院 | 户外少妇对白啪啪野战 | 91欧美激情一区二区三区成人 | 日韩欧美黄色片 | 四虎在线免费视频 | 国产免费黄色片 | 97av在线视频 | 亚洲综合五月天婷婷丁香 | 99精品视频在线 | 亚洲精品网站在线观看 | 日韩aaaa| 久久在线精品 | 久久久久久久久国产精品 | 曰本毛茸茸性生活 | av日韩在线播放 | 日本一区二区三区在线视频 | 中文在线视频 | av超碰在线 | 欧美福利视频 | 一区二区三区影视 | 国产伦精品一区二区三区照片 | 久操视频在线观看 | 国产99热 | 亚洲国产欧美在线 | 青青草福利视频 | 九九色影院 |