前阵子咱们专题话集中讲解了yii2的事件机制,一共六篇文章,反馈很是好,此次咱们再开一个yii2行为机制专题,和你们一块儿开始行为的奇妙之旅php
本节为前导课,主要讲解一个概念,那就是 --- 什么是行为?编程
先思考一个问题:“经过什么方法能够扩展一个类的能力那?”segmentfault
对,最经常使用的就是继承,来个例子。设计模式
// 父类
class man {
public function likeAv(){
}
}
// 工程师
class developer extends man {
}
// use it
$developer = new developer();
$developer->likeAv();复制代码
是的,咱们经过继承关系让developer有了一个likeAv的方法,固然好比咱们还可定义 phper 继承于 developer 类,等等等等,可是它带来的坏处也是明显的,增长了程序的复杂度和层次关系。微信
咱们在yii2的开发中也会遇到此问题,你是否记得你把全部的控制器都继承了一个本身定义的父类,别说你没干过?yii2
可是这样彷佛也不够,咱们想让类具备更多能力,不少语言中有一个叫作多重继承的机制,就是一个儿子好几个爹能够,可是,PHP只能单继承,yii2天然也逃离不了这样的约定,那是否是说就没别的招了那?yii
我是行为,我来了。编程语言
在必定程度上,行为解决了这个问题,因此你们千万不要用复杂的大脑复杂化了初衷单纯的行为Behaviors。工具
行为能够在不修改现有类的状况下,对类的功能进行扩充。 经过将行为绑定到一个类,可使类具备行为自己所定义的属性和方法,就好像类原本就有这些属性和方法同样。 学习
对的,就是这么牛逼,若是你不信?咱们看下官方文档的一句话。
Behaviors are instances of yii\base\Behavior, or of a child class. Behaviors, also known as mixins....
它也叫mixins,建议你们去google查下什么是mixins,也许你对行为会有更好的理解,行为就是mixins,仅此而已。
不知道你是否清楚了?下节课进入到具体的分析阶段,来,一块儿飞,除了学习行为,本系列更重要的是带你学学如何有效看源码。
一样是对类能力的扩展,行为和继承的区别我再给你们举个现实的例子,帮助理解(这个例子是我在sf上抄的,感谢被抄者,放个他sf主页表示感谢 segmentfault.com/u/zebrayoun…
行为是一种设计模式,继承是编程语言的特性
继承:感受更像物种的进化,物种的扩展,生成新的物种,这些新的物种又具备不一样的特性。也就是说,我必须生成新的具备某种特性或者功能的物种去实现我想要的。
====
行为:想要实现某种功能的时候须要借助别的工具,我想用笔记本电脑画画,那我就买一个触控板,接上就能够。可是前提是个人笔记本要预留跟触控板连接的接口,behavior就至关于这个预留的接口。
====
区别:从实现方式上讲,继承要实现新的属性功能就必须生成一个新的对象。
====
使用行为的方式,
一是没必要对现有类进行修改,
二是PHP不支持多继承,可是Yii能够绑定多个行为,从而达到相似多继承的效果。
本文原创发布于微信公众号 北哥兄弟连。