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

分享個(gè)簡(jiǎn)單易懂且非常有用的laravel事件

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

前言

在開始本文的正文之前,我們先說一下在什么場(chǎng)景會(huì)使用這個(gè)事件功能。

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

原來這個(gè)注冊(cè)的方法也就10多行代碼。但是有時(shí)候我們?yōu)榱耸∈拢苯釉谧?cè)代碼后面添加了各種代碼。

例如這個(gè)注冊(cè)方法本來是這樣的

<?php
namespace App\Htt\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
 public function register(Request $request)
 {
  //獲取參數(shù)
  //驗(yàn)證參數(shù)
  //寫入數(shù)據(jù)庫
  //return 注冊(cè)信息
  
  
 }
}

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

<?php
namespace App\Htt\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
 public function register(Request $request)
 {
  //獲取參數(shù)
  //驗(yàn)證參數(shù)
  //寫入數(shù)據(jù)庫
  
  //發(fā)送廣告郵件
  //return 注冊(cè)信息
  
  
 }
}

這是比較直觀的寫法,后來又有需求要發(fā)個(gè)短信。

<?php
namespace App\Htt\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
 public function register(Request $request)
 {
  //獲取參數(shù)
  //驗(yàn)證參數(shù)
  //寫入數(shù)據(jù)庫
  
  //發(fā)送廣告郵件
  //發(fā)送短信
  //return 注冊(cè)信息
  
  
 }
}

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

但是,在實(shí)際項(xiàng)目中,這個(gè)注冊(cè)方法里面已經(jīng)加了很多東西。如果多人開發(fā)的話各種不方便。然后想到了laravel似乎有這個(gè)功能,但是一直都不知道怎么應(yīng)用,仔細(xì)看了一下手冊(cè),發(fā)現(xiàn)和自己的想法不謀而合。

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

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

現(xiàn)在我們無非就是要在注冊(cè)之后要做一系列的事情,首先得注冊(cè)完之后調(diào)用一個(gè)事件,然后這個(gè)事件再做各種各樣的事

<?php
namespace App\Htt\Controllers;

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

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

找到\app\Providers\EventServiceProvider.php文件。給它添加關(guān)系,告訴系統(tǒng),有人用event()調(diào)用了事件之后要被誰監(jiān)聽得到。

<?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 = [
  // 用戶注冊(cè)后的事件
  'App\Events\Register' => [
   // 發(fā)送廣告郵件
   'App\Listeners\SendAdMail',
   // 發(fā)送短信
   'App\Listeners\SendSms',
   // 發(fā)送幫助信息
   'App\Listeners\SendHelpInformation',

  ],
 ];
}

這里是注冊(cè)事件的入口,相當(dāng)于一個(gè)總目錄,這樣就可以跟注冊(cè)代碼解耦了,以后要加?xùn)|西我們就不需要再去看注冊(cè)方法的代碼了

現(xiàn)在注冊(cè)完之后會(huì)觸發(fā)這個(gè)App\Events\Register類,然后這個(gè)類會(huì)被App\Listeners\SendAdMail,App\Listeners\SendSms,App\Listeners\SendHelpInformation監(jiān)聽得到,我們進(jìn)入app\Events目錄,創(chuàng)建Register這個(gè)類

<?php

namespace App\Events;

class Register
{

 public $uid;

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

這樣就可以了。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

下面小編就為大家分享一篇laravel ORM 只開啟created_at的幾種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要給大家介紹了如何通過源碼解析Laravel的依賴注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關(guān)于Laravel中unique和exists驗(yàn)證規(guī)則的優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面
最近在使用laravel5.5,利用其實(shí)現(xiàn)了一個(gè)功能,下面分享給大家,這篇文章主要給大家介紹了關(guān)于Laravel 5.5基于內(nèi)置的Auth模塊如何實(shí)現(xiàn)前后臺(tái)登陸的相關(guān)資料,文中通過示例代碼介紹的非
laravel 的隊(duì)列服務(wù)對(duì)各種不同的后臺(tái)隊(duì)列服務(wù)提供了統(tǒng)一的 API,下面這篇文章通過源碼分析給大家介紹了關(guān)于 Laravel 重復(fù)執(zhí)行同一個(gè)隊(duì)列任務(wù)的原因,文中通過示例代碼介紹的非常詳細(xì)
這篇文章主要給大家介紹了關(guān)于 Laravel Redis 多個(gè)進(jìn)程同時(shí)取隊(duì)列問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來
主站蜘蛛池模板: 国产农村妇女精品一区 | 狠狠躁18三区二区一区 | 精品久久99| 国产视频一二三区 | 一级毛片视频 | 久久久国产网站 | 亚洲 欧美 激情 另类 校园 | 亚洲精品www久久久久久广东 | 手机av在线| 久久久久黄 | 日日日日操 | 欧美中文字幕一区 | 欧美极品在线观看 | 久久久久久久久久爱 | 精品国产31久久久久久 | 黄色小视频大全 | 色婷婷狠狠| 中文字幕一区二区三区日韩精品 | 日韩午夜电影在线观看 | 欧美亚洲国产日韩 | 精品国产欧美 | 亚洲啪啪 | 伊人在线 | 欧美日韩精品久久久免费观看 | 精品九九| 日韩在线小视频 | 久久久久久亚洲精品 | 中文字幕日韩欧美 | 日韩精品一区二区三区视频播放 | 午夜三级在线观看 | 激情欧美一区二区三区中文字幕 | 日韩av视屏 | 欧产日产国产精品国产 | 久久久久亚洲av毛片大全 | 成年人网站免费视频 | www.日本三级 | 色男人天堂av | 99精品欧美一区二区蜜桃免费 | 免费能直接在线观看黄的视频 | 亚洲一级淫片 | 97精品国产97久久久久久免费 |