Hyperf框架 事件機制

2021-10-08 19:45:38 字數 2269 閱讀 8453

事件機制包含三個角色。

事件event

定義乙個類,一般需要儲存一些源資料,因此事件物件應該採用短生命週期的寫法,即使用 new userregisterd($userid) 的寫法。

排程器dispatcher

觸發事件,一般需要傳遞源資料到事件物件裡,並且使該事件的所有監聽者去做相應的處理。

***listenner

排程器會將事件物件傳遞到***,***得到事件並做相應的處理。由於物件的傳遞是引用傳遞,且***是序列執行的,所以在***裡面可以改變事件物件的資料,以傳遞到下乙個***繼續處理,乙個事件可以被多個***監聽,乙個***可以監聽多個事件,可以設定***的執行先後順序。

定義兩個事件

<?php

namespace

;class

userpayedevent

public

function

__destruct()

}

<?php

namespace

;class

userregisterevent

public

function

__destruct()

}

定義兩個***
<?php

namespace

;use

;use

hyperf\event\contract\listenerinte***ce

;class

sendemaillistener

implements

listenerinte***ce

public

function

process

(object $event

)}

<?php

namespace

;use

;use

;use

hyperf\event\contract\listenerinte***ce

;use

swoole\coroutine\system

;class

sendsmslistener

implements

listenerinte***ce

public

function

process

(object $event

)}

註冊***到配置檔案

排在前面的***先被執行。

config/autoload/listeners.php

<?php

declare

(strict_types=1)

;/**

* this file is part of hyperf.

* * @link

* @document

* @contact [email protected]

* @license

*/return[:

:class,:

:class,]

;

投遞事件
<?php

}

多個***是序列的,且是有順序的。

事件物件被最後乙個***執行完就會被釋放掉。

Hyperf框架建立json rpc服務

我們建立乙個user服務供其他服務呼叫以實現認證和鑑權。checktoken 方法接收兩個引數,乙個token,乙個permission,首先驗證token獲得user,對user的鑑權將在以後的許可權認證教程補充。如果認證成功,將返回user.在配置檔案server.php增加乙個json rpc...

遊戲框架設計 遊戲中的事件機制

事件機制在很多高階程式語言中都有支援。譬如vb c delegate c builder 並不屬於c 的範疇。c builder中的事件處理器必須用關鍵字closure 閉包 修飾 等等,甚至在html中也可以見到它的身影。事件機制的引入使軟體系統變得更加易於理解 它使一種語言 平台 更加接近於這個...

mysql事件機制 mysql事件機制 定時任務

定時任務是老生常談了,因為我們總是需要定時修改特定的資料。實現它的方法肯定不止一種,但我在相當長一段時間裡都是用程式編碼去做的,今天突然想到 為什麼一定要採用呼叫的方式?用資料庫自身的能力去實現不是更好麼?通過了解,mysql的事件機制可以完成定時任務,其原理是在指定的時間呼叫指定的儲存過程。現在很...