在Laravel文档中经常出现这个让我郁闷的词汇,在群里问了一下才知道这东西不是laravel所有,而是php内容。于是去php官方文档查看,看的一脸懵逼。想想还是直接借助Google,php trait是什么?
搜索第二条就是安正超大牛的博客,很短,稍微看一下就基本能理解了。
trait是php5.4加入的一种用于代码复用的语法
,类也用于复用,也就是说这东西和类的作用是相似的,包括书写方式也类似。
据我所知的面向对象语言中只有C++明确支持多继承,那么java,php这些只有单继承的语言怎么办?由于有些类是要实现接口的,java的做法是普通类之间不能多继承,但可以继承多个接口。
php实现这个多继承就是用Trait特征,意思很简单,根据一定的特征把重复的方法放在一个文件,这个文件就叫做一个trait,然后use引入这个Trait就能使用了,可以同时引入多个特征。那么到底根据什么特征来区别呢?这就是Trait复用的思考重点了。
一个类很多乱七八糟的属性和方法,你可以根据价格,根据地区划分出多个Trait,需要的时候随意组合起来使用,和依赖注入的原理非常像,耦合度很低,类似于composer组件化思想。
安大神也认为Trait分类拆分会是大家碰到最头疼的问题,他给出三个拆分技巧:
|
|