首頁 > 後端開發 > php教程 > Laravel的定制活動

Laravel的定制活動

William Shakespeare
發布: 2025-03-04 09:07:10
原創
110 人瀏覽過

Custom Events in Laravel

在本文中,我們將探討Laravel事件管理的基礎知識。我們還將創建一個自定義事件和偵聽器的現實世界示例。

> Laravel中事件的概念基於非常流行的軟件設計模式 - 觀察者模式。在這種模式下,系統會在發生某些事情時提出事件,您可以定義聽取這些事件並做出相應反應的聽眾。這是一個非常有用的功能,使您可以將組件在系統中解除否則會導致緊密耦合代碼的組件。因此,它使他們能夠對此登錄事件做出反應,無論是要發送電子郵件還是應用程序內通知,還是想對此登錄事件做出反應的任何事物。

>

事件的基礎知識和聽眾

在本節中,我們將探索Laravel在核心框架中實現事件和聽眾的方式。如果您熟悉Laravel的體系結構,您可能知道Laravel實現了服務提供商的概念,該概念使您可以將不同的服務注入應用程序。

>

>同樣,Laravel提供了一個內置的eventserviceProvider.php

類,使我們能夠為應用程序定義了everter mappings for Application for Application。 > app/provist/experterviceProvider.phpfile。

>讓我們仔細查看登錄
<?php<br><br>namespace App\Providers;<br><br>use Illuminate\Auth\Events\Registered;<br>use Illuminate\Auth\Listeners\SendEmailVerificationNotification;<br>use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;<br>use Illuminate\Support\Facades\Event;<br><br>class EventServiceProvider extends ServiceProvider<br>{<br>    /**<br>     * The event listener mappings for the application.<br>     *<br>     * @var array<br>     */<br>    protected $listen = [<br>        Registered::class => [<br>            SendEmailVerificationNotification::class,<br>        ],<br>    ];<br><br>    /**<br>     * Register any events for your application.<br>     *<br>     * @return void<br>     */<br>    public function boot()<br>    {<br>        parent::boot();<br><br>        //<br>    }<br>}<br>
登入後複製
登入後複製
> event。

當然,您需要定義Artisan >> >

php artisan event:generate<br>
登入後複製
登入後複製
登入後複製

php artisan event:generate<br>
登入後複製
登入後複製
登入後複製

<?php<br><br>namespace App\Events;<br><br>use Illuminate\Broadcasting\Channel;<br>use Illuminate\Broadcasting\InteractsWithSockets;<br>use Illuminate\Broadcasting\PresenceChannel;<br>use Illuminate\Broadcasting\PrivateChannel;<br>use Illuminate\Contracts\Broadcasting\ShouldBroadcast;<br>use Illuminate\Foundation\Events\Dispatchable;<br>use Illuminate\Queue\SerializesModels;<br><br>class ClearCache<br>{<br>    use Dispatchable, InteractsWithSockets, SerializesModels;<br><br>    public $cache_keys = [];<br><br>    /**<br>     * Create a new event instance.<br>     *<br>     * @return void<br>     */<br>    public function __construct(Array $cache_keys)<br>    {<br>        $this->cache_keys = $cache_keys;<br>    }<br><br>    /**<br>     * Get the channels the event should broadcast on.<br>     *<br>     * @return \Illuminate\Broadcasting\Channel|array<br>     */<br>    public function broadcastOn()<br>    {<br>        return new PrivateChannel('channel-name');<br>    }<br>}<br>
登入後複製

>應該已經在app/event/events/clearcache.php

上創建事件類別,以及

app/listerers/thampcache.phpAppListenersWarmUpCache。這是:AppEventsClearCache handleAppListenersWarmUpCache

正如您可能注意到的那樣,我們添加了一個新的屬性事件

助手函數,用於從應用程序中的任何地方提出事件。當事件提出時,Laravel調用所有聽眾聽那個特定事件的聽眾。因此, handle

applistenerswarmupcache>從控制器提出事件時,請調用<code> applistenerswarmupcache 偵聽器。剩下的是要熱身緩存已清除的緩存! >,這就是您可以在應用程序中創建自定義事件並與之合作的方式。 ><h2>什麼是事件訂閱者? </h2> <p>>事件訂閱者允許您在一個地方訂閱多個事件聽眾。無論您是要邏輯上的事件聽眾還是要在一個地方包含成長的事件,都是您要尋找的事件訂閱者。 </p>方法的第一個參數是<p>類的實例,您可以使用</p>>方法來與聽眾綁定事件。 <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;?php&lt;br&gt;&lt;br&gt;namespace App\Providers;&lt;br&gt;&lt;br&gt;use Illuminate\Auth\Events\Registered;&lt;br&gt;use Illuminate\Auth\Listeners\SendEmailVerificationNotification;&lt;br&gt;use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;&lt;br&gt;use Illuminate\Support\Facades\Event;&lt;br&gt;&lt;br&gt;class EventServiceProvider extends ServiceProvider&lt;br&gt;{&lt;br&gt; /**&lt;br&gt; * The event listener mappings for the application.&lt;br&gt; *&lt;br&gt; * @var array&lt;br&gt; */&lt;br&gt; protected $listen = [&lt;br&gt; Registered::class =&gt; [&lt;br&gt; SendEmailVerificationNotification::class,&lt;br&gt; ],&lt;br&gt; ];&lt;br&gt;&lt;br&gt; /**&lt;br&gt; * Register any events for your application.&lt;br&gt; *&lt;br&gt; * @return void&lt;br&gt; */&lt;br&gt; public function boot()&lt;br&gt; {&lt;br&gt; parent::boot();&lt;br&gt;&lt;br&gt; //&lt;br&gt; }&lt;br&gt;}&lt;br&gt;</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div>><p>><code>subscribesubscribeIlluminateEventsDispatcher>>方法的第一個參數是您想要收聽的事件,第二個參數是一個偵聽器,當事件被啟動時,可以召集cmirer。本身。 listen

不會自動拾取事件訂戶類。您需要在

屬性下的“ listen

”類中註冊它,如以下片段所示。

>$subscribe>

>>>>>>>>>>>>>>>>>>>> >
php artisan event:generate<br>
登入後複製
登入後複製
登入後複製

以上是Laravel的定制活動的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板