事件&聽者的概念很容易理解。聽衆只是等待事件被解僱的觀察員。他們通過交換數據進行協作。當你創建一個事件時,你爲它提供了所有需要的數據,然後你在每個連接的監聽器中使用它。
在Laravel,要舉辦一個活動,您必須使用event(new YourEvent($data))
。讓我們考慮一下你的問題 - 看看有多少用戶在指定的時間內登錄。讓我們用$ user和$ timestamp屬性創建一個LoginEvent。
這樣簡單的類已經足夠了,我們只需要存儲稍後我們將要使用的數據。
因此,現在,在控制器或其他地方,您可以觸發此事件。假設您的AuthController採用了Login方法:
public function login()
{
// login implementation...
$user = // logged user;
$logged_at = Carbon::now();
event(new LoginEvent($user, $logged_at));
}
並且在EventServiceProvider的LoginEvent中附加了CountLoginsListener。假設有這樣的事情:
class CountLoginsListener {
public function handle(LoginEvent $event)
{
if ($this->isHourBetweenSpecifiedPeriod($event)) {
$login_log = new LoginLog;
$login_log->user()->associate($event->user);
$login_log->logged_at = $event->logged_at;
$login_log->save();
}
}
}
然後你就完成了。
您的代碼中的某個地方定義該事件發生了。此時將被稱爲與此事件相關的監聽器的功能,如您在服務提供商中所描述的 – omadonex
https://laravel.com/docs/5.3/events – Cary
@Trayer您好我的第二個人,你可以看看在https://laravel.com/docs/5.3/events – Troyer