ホームページ  >  記事  >  php教程  >  マイナー [PHP フレームワーク] 5. イベント

マイナー [PHP フレームワーク] 5. イベント

WBOY
WBOYオリジナル
2016-06-20 08:42:121151ブラウズ

5.1 イベント

マイナーの 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 イベントのトリガー

マイナーは、イベント管理クラス MinorEventEventManger を提供します。このイベントは、このクラスの静的メソッド 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 リスナーを AppListenerDemoListener のハンドル メソッドとして構成しました。このクラスの実装を確認できます。

<?<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 までご連絡ください。