Yii2中事件的真实示例

Ami*_*mar 12 php yii yii2

我从yii2 doc中了解了一些事件.

我知道它是如何工作的,但我不知道在哪里使用它以及如何在我的开发中使用它.有一个发送电子邮件通知的例子,但我想要一个明确的例子,清楚这个想法在哪里使用以及如何使用它.

我的代码在我写的模型下面

const EVENT_NEW_USER = 'new-user';
public function sendMailto($event){
    $this->sendMail(arguments);
   // you code 
}  
Run Code Online (Sandbox Code Playgroud)

在控制器中:

use yii\base\Component;
use yii\base\Event;

public function someaction (){
    $model->on(SignUpForm::EVENT_NEW_USER, [$model,'sendMailto'],['auth'=>$model_auth,'user_details'=>$user_details]);
    $model->trigger(SignUpForm::EVENT_NEW_USER); 
}
Run Code Online (Sandbox Code Playgroud)

WeS*_*See 3

我在 Yii 中使用事件来松散耦合单个 Yii 安装中的消息发送者和接收者(无分发,单个服务器)。

在我的 Yii 软件中,有用于功能块的 Yii 模块。客户根据其功能需求获得模块集。这些模块需要相互通信。

例子:

  • 在模块 1(发送方模块)中,有一个状态更新需要传达给用户。
  • 模块 2(接收器模块)向 twitter 发送状态更新。
  • 模块 3(接收器模块)通过电子邮件发送状态更新。

为了使发送模块独立于接收模块,我使用 Yii 事件机制。因此,模块 1 不需要了解有关接收方的任何信息,模块 2 和 3 不需要了解有关发送方的任何信息。只有一个通用的消息结构。

这工作得很好,并且模块是相互独立的。