摘要:事件類負(fù)責(zé)序列化傳入數(shù)據(jù),并將其傳遞給偵聽器,旨在在事件觸發(fā)后處理邏輯的內(nèi)容。當(dāng)綁定準(zhǔn)備就緒時(shí),我們可以使用生成一對(duì)事件偵聽器,或者我們可以使用命令多帶帶創(chuàng)建它們。我們的事件沒有其他責(zé)任,只是將用戶指定為公共財(cái)產(chǎn),可能會(huì)傳遞給偵聽器。
在許多情況下,當(dāng)我們的應(yīng)用程序變得更大,并且需要處理越來越多的任務(wù)時(shí),我們的控制器,演示者或服務(wù)的大小可以快速增加,并且很容易變得難以處理,無法測(cè)試和緩慢。
單一職責(zé)重新組織我們的邏輯,并將不同類型的任務(wù)放到專門的類中,可能會(huì)非常有用,并且這是推薦的“最佳”實(shí)踐。
為什么?處理更多但更小的碎片比處理巨大巨石中的所有物件要容易得多。最重要的是,你的應(yīng)用程序變得更加可測(cè)試,你不會(huì)破壞SRP,并且最終你可以輕松獲得更干凈更漂亮的代碼。
開始使用事件其中一項(xiàng)有用的技巧是Laravel的 Event 服務(wù)。 首先,在各種情況下,通過將任務(wù)移至事件類,可徹底清理控制器。 使用事件的另一個(gè)原因是隊(duì)列系統(tǒng),它允許你的應(yīng)用程序異步完成作業(yè),這可以極大地加速你的應(yīng)用程序。
事件系統(tǒng)有兩個(gè)重要部分。 事件本身和偵聽器(Listener)可以綁定到特定的事件。 事件類負(fù)責(zé)序列化傳入數(shù)據(jù),并將其傳遞給偵聽器,旨在在事件觸發(fā)后處理邏輯的內(nèi)容。
實(shí)際中使用事件 (Event)觸發(fā)事件從未如此簡(jiǎn)單,我們所要做的就是調(diào)用 event() helper,并將事件的類作為參數(shù)。如: event(UserRegistered::class) 。
通過一個(gè)常見的例子,讓我們看看它在現(xiàn)實(shí)生活中的作用。在我們的應(yīng)用程序中,我們希望向我們的新用戶發(fā)送歡迎電子郵件。
首先,我們需要在 EventServiceProvider 中綁定事件和偵聽器。如果我們想要處理特定事件的不同邏輯,我們可以將更多監(jiān)聽器附加到事件上。
// app/Providers/EventServiceProvider.php [ "AppListenersSendWelcomeEmail", ], ]; }
當(dāng)綁定準(zhǔn)備就緒時(shí),我們可以使用 php artisan event:generate 生成一對(duì) 事件-偵聽器,或者我們可以使用 artisan make 命令多帶帶創(chuàng)建它們。
我們的事件沒有其他責(zé)任,只是將用戶指定為公共財(cái)產(chǎn),可能會(huì)傳遞給偵聽器。
// app/Events/UserRegistered.php user = $user; } }
我們的偵聽器Listener是重要的一部分。 它實(shí)現(xiàn)了 ShouldQueue 接口,這意味著這個(gè)事件將被推送到隊(duì)列堆棧。 在 handle 方法中,我們正在實(shí)現(xiàn)將電子郵件發(fā)送給給定用戶的邏輯。
// app/Listeners/SendWelcomeEmail.php user)->send(new WelcomeEmail($event->user)); } }
重組我們的邏輯可能非常有用,尤其是當(dāng)你需要處理大量任務(wù)時(shí)。事件和偵聽器可能對(duì)你有很大的幫助。你可以在這里找到官方的Laravel事件文檔。
更多PHP知識(shí),請(qǐng)前往 PHPCasts
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/28680.html
摘要:年,將作為一種包含全新現(xiàn)代方法的框架介紹給大家。本文我們將討論為什么會(huì)成為最成功的框架。身份驗(yàn)證安全是至關(guān)重要的。單元測(cè)試單元測(cè)試的開發(fā)是一個(gè)耗費(fèi)大量時(shí)間的任務(wù),但是它卻是保證我們的應(yīng)用程序保持正常工作的關(guān)鍵。中可使用執(zhí)行單元測(cè)試。 2011年,Taylor Otwell將Laravel作為一種包含全新現(xiàn)代方法的框架介紹給大家。Laravel最初的設(shè)計(jì)是為了面向MVC架構(gòu)的,它可以滿足...
摘要:前端單元測(cè)試,推薦淘寶開源的工具,簡(jiǎn)單易用,支持眾多測(cè)試框架,也支持調(diào)試。這些也是設(shè)計(jì)前端框架時(shí)需要權(quán)衡的重要方面。最后,其實(shí)大型網(wǎng)站不一定要設(shè)計(jì)自己的前端框架,完全可以選用現(xiàn)有的框架。 有人在知乎上提問如何設(shè)計(jì)大型網(wǎng)站的前端 JavaScript 框架,有不少回答,其中得贊較多的兩個(gè)回答如下: 相對(duì)大型的項(xiàng)目在前端 JS 方面有幾個(gè)需要達(dá)成的目標(biāo): 1. 代碼邏輯分層 ...
閱讀 3319·2021-11-24 09:39
閱讀 3260·2021-10-21 09:38
閱讀 2454·2019-08-29 15:28
閱讀 3797·2019-08-26 12:23
閱讀 2671·2019-08-26 12:19
閱讀 1410·2019-08-23 12:44
閱讀 2178·2019-08-23 12:02
閱讀 1120·2019-08-22 17:05