<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分别是添加事件和移除事件