laravel--事件

事件的原理及时 观察者模式的实现;

新建一个事件类(被观察者)

可以建立多个监听类(观察者)

然后标记观察者和被观察者的关系,当被观察者变化时,通知观察者(在appprovicderseventServiceProviders中标记事件类下的监听类)


建立事件类

php artisan make:event DelMsgEvent

会在appenents目录下创建

<?php

namespace App\Events;

use app\events\event;

use illuminate\queue\serializesmodels;

use illuminate\contracts\broadcasting\shouldbroadcast;

class delmsgevent extends event{

  use serializesmodels;

/*

*被外部调用该事件时,可以传值

*@param $data

*/

public function __construct($data){

   $this -> data();

}

}

建立监听者在applisteners目录下创建

<?php

namespace App\Listeners;

use App\Events\SomeEvent;

use Illuminate\Queue\InteractsWithQWueue;

use Illuminate\contracts\Queus\ShouldQueue;

class EventListener{

public function __construct(){

}

/*

*事件触发后,监听者的handle方法会被调用用来处理


*

*/

public function handle()someevent $event{

  echo 'this is enentlisten';

}

}

建立事件和监听者的关系在appprovidersEventServiceProviders.php中的

protected $listen = [

'App\Events\SomeEvent'=>[

  //事件监听者

'App\Listeners\EventListener',

'App\Listeners\SomeEventListener',

]

]

在控制器触发事件

//Event事件的支持,Event::fire所在的类
use Illuminate\Support\Facades\Event;
//要用到的事件
use App\Events\SomeEvent;
public function getShow()
{
    $find = array(
        "uid"   =>  55,
        "msg.women"   =>  false //搜索,根据msg字段中的women字段
    );
    $list = $this->collec->find($find);
    foreach($list as $document) //是个对象,需要迭代遍历
    {
        var_dump($document);
    }
    //触发事件
    Event::fire(new SomeEvent($list));
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值