php5.4起,php实现了一种代码复用的方法,称为trait
trait是为PHP单继承准备的一种代码复用机制, trait为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用method。
从基类(父类)继承的成员会被trait插入的成员所覆盖,而trait中的成员又会被当前类成员覆盖。
使用use关键词使用trait,多个trait通过逗号分隔。如果两个trait都插入了一个同名方法,如果没有明确解决同名成员方法的冲突,程序将会长生一个致命错误。为了解决多个trait在同一个类中的命名冲突,需要使用insteadof操作符来明确指定使用冲突方法中的哪一个。也可以使用as操作符为某个方法引入别名,使用as还可以用来调整方法的访问控制(public/ protected / private )。
trait也能够使用trait,在trait定义是通过使用一个或多个trait,能够组合其他trait中的部分或全部成员
为了对使用的类增加约束,trait支持抽象方法的使用
traits可以被静态成员静态方法定义
上面就是些 Trait 比较基本的使用了。这里总结下注意的几点:
1.Trait 会覆盖调用类继承的父类方法,但也会被当前类所覆盖
2.Trait 无法如 Class 一样使用 new 实例化
3.单个 Trait 可由多个 Trait 组成
4.在单个 Class 中,可以使用多个 Trait
5.Trait 支持修饰词(modifiers),例如 final、 static 、 abstract
6.我们能使用 insteadof 以及 as 操作符解决 Trait 之间的冲突
7.Trait中不区分修饰符,即可以操作Trait中的public protected private级别的属性和方法,这个extends继承有所不同
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~