首页 > 后端开发 > php教程 > Laravel的定制活动

Laravel的定制活动

William Shakespeare
发布: 2025-03-04 09:07:10
原创
111 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板