我正在使用oxwall,我想知道EventManager是如何在这个平台上注册特定事件的新方法的,我想通过一个简单的示例来触发事件并将其绑定到流程。
发布于 2018-05-29 04:41:19
下面是一个触发事件并将其绑定到流程的示例。我的格式有点糟糕...
假设您正在创建一个用于创建用户帐户的插件。
/**
* 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();https://stackoverflow.com/questions/50461328
复制相似问题