24.Yii 组件行为

来源:互联网 发布:perl encode json 编辑:程序博客网 时间:2024/06/03 14:24

这里写图片描述

1.先定义一个 行为类:class ApplicationBehavior extends CBehavior{    public function beginRequest123($event)    {        echo "我已经将 onBeginRequest 的事件处理通过行为绑定了123";        var_dump($event);    }}


这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

调用时,通过 $component->行为方法() ,调用__call()

这里写图片描述

如果是行为的属性的话,可以通过如下访问:$app = Yii::createWebApplication($config);$ret = $app->attachBehavior('app', 'application.behaviors.ApplicationBehavior');echo $app->a;

这里写图片描述
这里写图片描述
这里写图片描述


这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述


在 Yii 里面,通过行为类绑定,组件将一个或多个 CBehavior 类的成员方法和成员变量添加到自己身上,并且在不需要的时候载掉某些 CBehavior 类。同时,可以通过重写 CBehavior::events 的方法,来实现对目标类的多个事件绑定。这些事件将会在当前行为绑定到目标类的时候,一起被绑定上。下面我们以代码来具体看一下这个行为特性。在 protected 创建目录 behaviors,并在protected/behaviors目录下创建ApplicationBehavior.php,输入如下代码:class ApplicationBehavior extends CBehavior{    public function events()    {        return array_merge(parent::events(), array(            'onBeginRequest' => 'beginRequest123'        ));    }    public function beginRequest123($event)    {        echo "我已经将 onBeginRequest 的事件处理通过行为绑定了";        var_dump($event);    }}
此行为文件,是要为 CApplication 服务,仔细查看这个行为文件,我们可以看到,events 方法定义了些行为可以处理的事件,上面的类,可以处理 onBeginRequest 事件,当然如果你自己定义的组件也有一个叫做 onBeginRequest 方法,你也可以使用此行为后面的 beginRequest 就是事件的处理函数,这个处理函数必须要有行为类中定义。

这里写图片描述
这里写图片描述


行为与事件绑定
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述

$this->_owner->attachEventHandler($event,array($this,$handler));// $event 事件名,array($this,$handle) 类名,方法

这里写图片描述
这里写图片描述

getEventHandlers() 返回的是 CList 类后面调用 CList 类的  add() 方法,将 event handle 添加进去

这里写图片描述
这里写图片描述
这里写图片描述


http://www.yiichina.com/doc/guide/1.1/basics.component

http://blog.csdn.net/chengfei112233/article/details/7659768

0 0
原创粉丝点击