天天看点

Yii2 理解Component

<a href="#1-%e7%89%88%e6%9c%ac">版本</a>

<a href="#2-%e7%bb%a7%e6%89%bf%e4%b8%8e%e5%ae%9e%e7%8e%b0">继承与实现</a>

<a href="#3-event%e5%92%8cbehaviors">event和behaviors</a>

<a href="#4-behaviors">behaviors</a>

<a href="#5-%e6%b7%bb%e5%8a%a0behavior%e5%88%b0component">添加behavior到component</a>

<a href="#6-ensurebehaviors">ensurebehaviors</a>

<a href="#7-attachbehavior%e5%92%8cattachbehaviors">attachbehavior和attachbehaviors</a>

<a href="#8-detachbehavior%e5%92%8cdetachbehaviors">detachbehavior和detachbehaviors</a>

<a href="#9-get">__get</a>

<a href="#10-set">__set</a>

<a href="#11-call">__call</a>

<a href="#12-on%e5%92%8coff">on和off</a>

component继承与object, object实现了configurable接口, 该接口要求在函数参数列表末尾加上 $config

该类的重点就是事件(class event)和行为(class behavior)

component的派生类如果有需要使用到behavior, 就需要重载这个函数。

比如controller设置规则。

component将会在很多地方调用该函数, 确保行为被添加到该组件中

假设xxcontroller::behaviors()定义如下:

一个是命名为access的行为, 一个是匿名行为。

将其打印输出:

两个行为会通过attachbehaviorinternal添加到component中

这两个函数用于额外再添加行为

这两个函数用于移除行为

component重写了__get函数, 这里就是将behavior中的属性绑定到component的地方,这样component就可以像调用自身属性一样调用behavior中的属性

component重写了__set函数

这里就是将behavior中的函数绑定到component的地方,这样component就可以像调用自身函数一样调用behavior中的函数

on 和 off分别是添加事件和移除事件