Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要更多关于事件的澄清2_Php_Yii2 - Fatal编程技术网

Php 需要更多关于事件的澄清2

Php 需要更多关于事件的澄清2,php,yii2,Php,Yii2,尝试学习Yii 2中的事件。我找到了一些资源。我得到更多关注的链接在这里 在第一条评论中,他举例说明。比如说,注册后我们有10件事要做——在这种情况下,活动很方便 调用该函数是一件大事?在model init方法中也发生了同样的事情: $this->on(self::EVENT_NEW_USER, [$this, 'sendMail']); $this->on(self::EVENT_NEW_USER, [$this, 'notification']); 我的问题是使用事件的意义

尝试学习Yii 2中的事件。我找到了一些资源。我得到更多关注的链接在这里

在第一条评论中,他举例说明。比如说,注册后我们有10件事要做——在这种情况下,活动很方便

调用该函数是一件大事?在model init方法中也发生了同样的事情:

$this->on(self::EVENT_NEW_USER, [$this, 'sendMail']);
$this->on(self::EVENT_NEW_USER, [$this, 'notification']);

我的问题是使用事件的意义是什么?我应该如何充分利用它们。请注意,这个问题纯粹是学习Yii 2的一部分。请举例说明。提前感谢。

我对写入(默认)事件使用触发事件,如验证前或删除前。这是一个例子,为什么这样的事情是好的

假设您有一些用户。一些用户(例如管理员)可以编辑其他用户。但您需要确保遵循特定的规则(假设:
只有主管理员可以创建新用户,不能删除主管理员
)。然后,您可以使用这些写入的默认事件

User
模型中(假设
User
模型包含所有用户),您可以编写
init()
以及您在
init()中定义的所有其他方法:

已经定义了删除之前的
self::EVENT\u
等常量,顾名思义,这一常量是在删除行之前触发的

现在,在任何控制器中,我们都可以编写一个触发这两个事件的示例:

public function actionIndex()
{
    $model = new User();
    $model->scenario = User::SCENARIO_INSERT;
    $model->name = "Paul";
    $model->save(); // `EVENT_BEFORE_INSERT` will be triggered

    $model2 = User::findOne(2);
    $model2->delete(); // `EVENT_BEFORE_DELETE` will be trigerred
    // Something else
}

你读到“是”了吗?那对我没有帮助。@soju我回答你的问题了吗?:)
public function actionIndex()
{
    $model = new User();
    $model->scenario = User::SCENARIO_INSERT;
    $model->name = "Paul";
    $model->save(); // `EVENT_BEFORE_INSERT` will be triggered

    $model2 = User::findOne(2);
    $model2->delete(); // `EVENT_BEFORE_DELETE` will be trigerred
    // Something else
}