我通过在EventServiceProvider中注册该对来创建了一个Event \ Listener。 运行php artisan generate:event Laravel在那些受尊重的目录中创建了Event和Listener类。
我注意到如果要激活事件,则需要调用静态Event :: fire方法。
Event::fire( new SomeEventClass($variable));
但是我注意到,如果你想将$variable
传递给听众。
您需要将$ variable声明为该类的公共属性,并在Associated Event类中创建一个构造函数,以便您可以在Listener类中使用它,稍后从{{1}传递$variable
},否则$event->variable
将无法在Listener类中工作。
$variable
因此,在这种情况下,重新澄清我的问题是什么是“在幕后”。
答案 0 :(得分:1)
我不认为这里有很多内容,这是一个非常透明的过程。
当您触发事件时,Laravel将查找该事件的所有侦听器(通过EventServiceProvider
类中的数组)并将事件类传递给它找到的每个侦听器并调用handle
每个听众的方法。
事件类实际上只做一件事,它保留了最终使用的侦听器数据。我们将这些数据设置为public,因为这为侦听器创建了一种非常简单的方法,可以从事件类中提取所需的数据。