I'm using oxwall
and I want to know how EventManager
works on this platform for registering new methods on specific events with a simple example for triggering and binding an event to a process.
问问题
78 次
1 回答
1
这是一个触发事件并将其绑定到流程的示例。我的格式有点烂...
假设您正在创建一个用于创建用户帐户的插件。
/**
* Method to save user
*/
public function saveUser( $username, $password, $email, $accountType )
{
$userService = BOL_UserService::getInstance();
$user = $userService->createUser( $username, $password, $email, $accountType );
//Set new event parameters
$event = new OW_Event('plugin_key_custom_event_name', array(
'userDto' => $user
));
//Trigger an event for after registering user
OW::getEventManager()->trigger($event );
}
将事件绑定到侦听器
您应该从您的事件处理程序类或您的插件 init.php 文件中执行此部分。
/**
*
* Bind Event
*/
class PLUGINKEY_CLASS_EventHandler
{
public function sendUserWelcome( OW_Event $e )
{
$params = $e->getParams();
$user = $params['userDto'];
BOL_UserService::getInstance()->sendWellcomeLetter($user);
}
public function init()
{
//bind sendUserWelcome() method to 'plugin_key_custom_event_name' event
OW::getEventManager()->bind('plugin_key_custom_event_name', array($this, 'sendUserWelcome'));
}
}
最后,您可以从 init.php 文件初始化事件处理程序。
$eventHandler = new PLUGINKEY_CLASS_EventHandler();
$eventHandler->init();
于 2018-05-28T20:41:19.127 回答