PHP中的trait
一、前言
自PHP 5.4.0起,PHP 实现了代码复用的一个方法,称为 trait。trait其字面意思是"特性"、"特点"。使用Trait关键字,可以为PHP中的类添加新的特性。
trait 是一种为类似 PHP 的单继承语言而准备的代码复用机制。在PHP中,只能实现单继承,而trait则避免了这点。
PHP中的traits可以理解为一组能被不同的类都能调用到的方法集合,但Traits不是类!不能被实例化。
二、实现代码
Log.php
Publish.php
Answer.php
总结:继承的方式虽然也能解决问题,但其思路违背了面向对象的原则,显得很粗暴;多态方式也可行,但不符合软件开发中的DRY(Don't Repeat Yourself)原则,增加了维护成本。而Trait方式则避免了上述的不足之处,相对优雅的实现了代码的复用。
三、优先级
Trait应用中的优先级如下:
1)来自当前类的成员覆盖了 trait 的方法
2)trait 覆盖了被继承的方法
总结:类成员优先级为: 当前类>Trait>父类
参考链接:
https://segmentfault.com/a/1190000008009455#item-1-3