本文参考: http://php.net/language.oop5.traits php
1、什么是traitoop
从PHP 5.4.0 开始 PHP 实现了一种新的代码复用方式 trait。spa
2、trait解决了什么问题.net
trait 的出现是为了解决相似PHP的单继承语言而准备的一种代码复用机制,让开发人员可以在不能层次结构内独立的类中复用 method。3d
3、跟其它语言相比,trait 有什么 好处code
Trait 和 Class 组合的语义定义了一种减小复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。blog
4、该如何使用trait继承
1ip 2ci 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
上面的代码会输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
上面的代码会输出:
若是两个 trait 都插入了一个同名的方法,若是没有明确解决冲突将会产生一个致命错误。
为了解决多个 trait 在同一个类中的命名冲突,须要使用 insteadof 操做符来明确指定使用冲突方法中的哪个。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
上面例子会输出:
除了这些特性,trait 还包括 抽象成员 静态成员 静态方法 属性 等特性,能够参考 http://php.net/language.oop5.traits