Minor【 PHP框架】5.事件
5.1 事件Event
Minor的 Event
类提供一个简单的观察者实现,允许您在应用程序里订阅与监听事件。
5.1.1 订阅事件
首先创建一个事件类:
<span style="color: #000000;">php namespace App\Event; </span><span style="color: #0000ff;">use</span><span style="color: #000000;"> Minor\Event\Event; </span><span style="color: #0000ff;">class</span> DemoEvent <span style="color: #0000ff;">extends</span><span style="color: #000000;"> Event { </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$name</span><span style="color: #000000;">; </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> __construct(<span style="color: #800080;">$name</span><span style="color: #000000;">) { </span><span style="color: #800080;">$this</span>->name = <span style="color: #800080;">$name</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> setName(<span style="color: #800080;">$name</span><span style="color: #000000;">) { </span><span style="color: #800080;">$this</span>->name = <span style="color: #800080;">$name</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> getName() { </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$this</span>-><span style="color: #000000;">name; } }</span>
登入後複製
然后在配置文件中注册这个事件:
<span style="color: #000000;">php </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$events</span> =<span style="color: #000000;"> [ </span>'App\Event\DemoEvent' =><span style="color: #000000;"> [ </span>'App\Listener\DemoListener' => 'handle',<span style="color: #000000;"> ]</span>,<span style="color: #000000;"> ];</span>
登入後複製
5.1.2 触发事件
Minor提供了一个事件管理类:Minor\Event\EventManger,通过调用该类的静态方法fire:EventManager::fire($event)就可以触发这个事件,例:
<span style="color: #0000ff;">class</span> FooController <span style="color: #0000ff;">extends</span><span style="color: #000000;"> Controller { </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> bar(<span style="color: #800080;">$productName</span><span style="color: #000000;">) { </span><span style="color: #800080;">$event</span> = <span style="color: #0000ff;">new</span> DemoEvent('DemoEvent'<span style="color: #000000;">); EventManager</span>::fire(<span style="color: #800080;">$event</span><span style="color: #000000;">); </span>...<span style="color: #000000;"> } }</span>
登入後複製
5.2 监听器
当触发事件后事件管理器EventManager就会通过配置文件去触发监听器的制定方法。在5.1.1配置文件中我们配置了DemoEvent的监听器为App\Listener\DemoListener的handle方法,可以看一下这个类的实现:
<span style="color: #000000;">php namespace App\Listener; </span><span style="color: #0000ff;">use</span><span style="color: #000000;"> App\Event\DemoEvent; </span><span style="color: #0000ff;">use</span><span style="color: #000000;"> Minor\Event\Listener; </span><span style="color: #0000ff;">class</span> DemoListener <span style="color: #0000ff;">extends</span><span style="color: #000000;"> Listener { </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> handle(DemoEvent <span style="color: #800080;">$event</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">echo</span> '[DemoListener] handle the event:[' . <span style="color: #800080;">$event</span>->getName() .'] success!<br><br>'<span style="color: #000000;">; } }</span>
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
<🎜>:種植花園 - 完整的突變指南
3 週前
By DDD
<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
如何修復KB5055612無法在Windows 10中安裝?
3 週前
By DDD
北端:融合系統,解釋
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)