laravel 事件机制 实践总结

laravel 事件机制 实践总结

laravel 事件机制 实践总结

观察者模式
  • 在EventServiceProvider的linsten数组里面加上事件和监听器,键名是事件,键值里面的数组是一个或者多个监听器,
protected $listen = [
    'App\Events\Event' => [
        'App\Listeners\EventListener',
    ],
    'App\Events\SendPhoneCodeEvent' => [
        'App\Listeners\SendPhoneCodeListener',
    ],
];
  • 生成监听和事件文件 php artisan event:generate
  • 编辑Event类
    • 可以添加属性来传递数据,添加方法来传递回调
  • 编辑Listener类
    • 在handle方法中编辑监听逻辑
  • 触发事件 调用全局函数event(),传入事件对象;
    • event(new SendPhoneCodeEvent($data));
发布订阅模式
  • 编辑订阅类 ,实质就是一个调度中心
<?php
/**
 * Created by PhpStorm.
 * User: liutengfei
 * Date: 2018/12/25
 * Time: 18:45
 */
namespace App\Listeners;
use App\Events\SomeEvent;
use App\Events\TestEvent;

class TaskToLogListener
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    public function someEventTask(SomeEvent $event)
    {
        echo 'uuuu'."\n" ;
    }

    public function testEventTask(TestEvent $event)
    {
        echo 'iiioo'."\n";
    }

    //这里是订阅中心,这里既可以调用自己,也可以分发到其他监听者
    public function subscribe($events)
    {
       $events->listen('App\Events\SomeEvent','App\Listeners\TaskToLogListener@someEventTask');


        $events->listen('App\Events\TestEvent','App\Listeners\Test2Listener@Handel');
        
 $events->listen('App\Events\TestEvent','App\Listeners\Test1Event@Handel');

    }
}
  • 在EventServiceProvider添加属性$subscribe
    • protected $subscribe = [TaskToLogListener::class];
  • 触发事件
Event::fire(new TaskAdded($task));
Event::fire(new TaskDeled($task));
posted @ 2018-12-26 11:06 节奏型男-全栈 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值