听说PHP中有个东西叫Trait

  • 在Laravel文档中经常出现这个让我郁闷的词汇,在群里问了一下才知道这东西不是laravel所有,而是php内容。于是去php官方文档查看,看的一脸懵逼。想想还是直接借助Google,php trait是什么?

  • 搜索第二条就是安正超大牛的博客,很短,稍微看一下就基本能理解了。trait是php5.4加入的一种用于代码复用的语法,类也用于复用,也就是说这东西和类的作用是相似的,包括书写方式也类似。

  • 据我所知的面向对象语言中只有C++明确支持多继承,那么java,php这些只有单继承的语言怎么办?由于有些类是要实现接口的,java的做法是普通类之间不能多继承,但可以继承多个接口。

  • php实现这个多继承就是用Trait特征,意思很简单,根据一定的特征把重复的方法放在一个文件,这个文件就叫做一个trait,然后use引入这个Trait就能使用了,可以同时引入多个特征。那么到底根据什么特征来区别呢?这就是Trait复用的思考重点了。

  • 一个类很多乱七八糟的属性和方法,你可以根据价格,根据地区划分出多个Trait,需要的时候随意组合起来使用,和依赖注入的原理非常像,耦合度很低,类似于composer组件化思想。

  • 安大神也认为Trait分类拆分会是大家碰到最头疼的问题,他给出三个拆分技巧:

从需求或功能描述拆分,而不是写了两段代码发现代码一样就提到一起;

拆分时可能需要将某些属性也一起带走;

拆分时如果给 Trait 起名困难时,请认真思考你是否真的拆分对了。因为正确的拆分是很容易描述 “它是一个具有什么功能的特性” 的;

参考地址: http://overtrue.me/articles/2016/04/about-php-trait.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容