参考:https://my.oschina.net/kenblog/blog/411074
第二个更好:https://blog.csdn.net/u012979009/article/details/51496165
事件主要用于“一系列”的动作操作,然后直接触发就行
先来个普通类:
<?php
namespace app<span class="hljs-title">models
;
use yii<span class="hljs-title">base<span class="hljs-title">Model;
// 所有的model也是,他们也是全部继承了component
class Person extends Model{
public function say_hello($parm){
echo "你应该会看到:".$parm->data.'<br>';
}
<span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">say_goodbye</span><span class="hljs-params">(<span class="hljs-variable">$parm</span>)</span>{<!-- --></span>
<span class="hljs-keyword">echo</span> <span class="hljs-string">"你应该会看到:"</span>.<span class="hljs-variable">$parm</span>->data.<span class="hljs-string">'<br>'</span>;
}
}
接下来是关键部分
// 在app\controllers\siteController下,所有的控制器都继承了component
public function actionEvent(){
$person = new Person();
$this->on('SayHello', [$person,'say_hello'],'你好,朋友');// 对象的方法
$this->on('SayHello', ['app\models\Person','say_goodbye'],'再见了,我的朋友');
$this->on('SayHello', function(){ // 匿名函数输出
echo '晚安!';
});
<span class="hljs-variable">$this</span>->trigger(<span class="hljs-string">'SayHello'</span>);<span class="hljs-comment">// 触发事件</span>
<span class="hljs-comment">// 通过 off 解除绑定</span>
<span class="hljs-variable">$person</span>->off(<span class="hljs-string">'SayHello'</span>, [<span class="hljs-variable">$person</span>, <span class="hljs-string">'say_hello'</span>]);
}</code></pre>
