PHP的Trait

Trait

Trait 是为了类似PHP的单继承语言PHP是单继承语言)而准备的一种代码复用机制。Trait 是为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用method。trait 和 class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和Mixin类相关典型问题。

Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。无法通过 Trait 自身来实例话。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。

1:example-1

TraitHello.php

Hello.php

echoHello();
    // 输出 hello
优先级

从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。

这个优先级解释的正的太绕了:
一句好就是 父类有 say方法,triat 也有say 方法,当前的子类既继承了父类,也 use 了trait,那么调用 say方法的优先级是 
1:当前类
2:trait
3:父类

示例代码:
Base.php

SayWorld.php

MyHelloWorld.php

sayHello();

输出 hello.world..

多个 trait

通过逗号分割,在use 声明列出多个trait,都可以插入到一个类中

你可能感兴趣的:(trait)