laravel事件的实现原理是什么

  介绍

这篇文章主要介绍laravel事件的实现原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

简单使用

1。配置事件和监听器应用\ \ EventServiceProvider提供者的听属性

protected  listen 美元;=,(   ,,,,,,,& # 39;应用\ \ useradd # 39;事件,=祝辞,(   ,,,,,,,,,,,& # 39;应用程序\听众\ UserAddListener& # 39;   ,,,,,,,,   ,,,,

2。生成对应的事件类和监听类文件,

php  artisan 事件:生成

会生成应用\ \ UserAdd事件,应用程序\听众\ UserAddListener两个类文件。

事件类主要是保存对应的信息的作用,比如一个属性保存用户模型实例,事件类实例会传给对应的事件监听器的处理方法处理事件逻辑。

public  function  __construct (User  $用户)   {   ,,这→美元user =, $ user;//创建事件实例时保存的信息   }

应用\听众\ UserAddListener监听器的处理方法就是处理逻辑的地方

public  function 处理(UserAdd 事件美元)   {   ,,,,,,,dd(用户事件→美元);//获取到对应事件实例的信息   }

3。事件的触发,使用公共函数()事件。传入对应事件类的实例

事件(new 事件\ App \ \ UserAdd(用户)美元);//执行这一步时,就会执行到处理方法

实现原理(照亮\ \事件调度器类)

public  function 注册()   {   ,,,这美元→程序→单例(& # 39;事件# 39;,,function  (app)美元,{   ,,,,,,,return  (new 分配器(app)美元)→setQueueResolver (function  (), use  (app), {   ,,,,,,,,,,,return 应用程序→美元(QueueFactoryContract::类);   ,,,,,,,});   ,,,});   }

注册到国际奥委会容器的事件其实是照亮\ \事件调度器类,也就是门事件其面实调用的是这个类的方法

重要属性和方法:

protected  listeners 美元;=,[];   protected  wildcards 美元;=,[];   protected  wildcardsCache 美元;=,[];//这三个属性都是配置事件与监听器关系的数组,时间注册进来后就是放到对应的数组里面的。//这个方法就是注册事件用的,把配置好的事件注入到上面的属性中   public  function 听(事件,美元,美元侦听器)   ,,,{   ,,,,,,,foreach ((数组),events 美元;as 美元事件),{   ,,,,,,,,,,,if  (Str:包含(事件,美元,& # 39;* & # 39;)),{   ,,,,,,,,,,,,,,,这个→美元setupWildcardListen(事件美元,,侦听器);   ,,,,,,,,,,,},{else    ,,,,,,,,,,,,,,,这个→美元听众($事件][],=,$ this→makeListener($侦听器);   ,,,,,,,,,,,}   ,,,,,,,}   ,,,}//这个方法就是执行对应事件监听器的方法,找到事件下面的是所有监听器,然后执行。   public  function 调度(事件,美元,美元payload =, [],, halt 美元;=,false),

laravel事件的实现原理是什么