yii2中behavior与(yii2/laravel)中trait的区别对比

trait为了解决php单继承的问题。行为可以动态增减功能。

trait优先顺序:当前类的方法 --覆盖--> trait的方法 --覆盖--> 被继承的方法
behavior优先顺序:当前类的方法 --覆盖--> 被继承的方法 --覆盖--> 行为的方法

行为behavior的优势:
1、行为类像普通类支持继承。另一方面,trait可以视为PHP语言支持的复制粘贴功能,它不支持继承。
2、行为无须修改组件类就可动态附加到组件或移除。要使用trait,必须修改使用它的类。
3、行为是可配置和可实例化,的而trait不能。
4、行为以响应事件来自定义组件的代码执行。
5、当不同行为附加到同一组件产生命名冲突时,这个冲突通过先附加行为的优先权自动解决。而由不同trait引发的命名冲突需要通过手工重命名冲突属性或方法来解决。

特性trait的优势:
1、traits比起行为更高效,因为行为是对象,消耗时间和内存。
2、IDE对trait更友好,因为它们是语言结构。
3、行为只能服务于组件类,而trait没有这个限制。

  行为behavior 特性trait
是否支持继承:
是否动态加减:
是否可配置/实例化:
命名冲突是否可解:
高效友好:
是否有限制:

综上:用行为、用行为、用行为。

猜你喜欢

转载自blog.csdn.net/wuhuagu_wuhuaguo/article/details/109080618
今日推荐