提到 php 的代码复用,我们可能第一时间会想到继承,但是这种单继承语言一旦派生的子类过多,那么会产生一系列的问题,比如依赖父类、耦合性太大、了类的封装性。那么有没有更好的方法来实现代码复用呢?
Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的,使开发人员能够地在不同层次结构内的类中复用方法集。Traits 和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类(Mixin)相关的典型问题。
在使用多个 Trait 时,如果其中存在相同的方法名称,那么就会产生冲突。使用 insteadof 和 as 可以解决方法名称冲突问题
Trait支持抽象方法、支持静态方法、不可以直接定义静态变量,但静态变量可被trait方法引用。
这种 trait use 的使用方法大概和 java 中的 call 有点相似,都是把一个另外一个对象挂载到当前对象的执行当中。当然 java 是基于原型的语言。两者也没有可比性。仅仅是使用方法相差无几,有助于理解。
推荐:
网友评论 ()条 查看