PHP Trait
Trait和Class类似,提供一种代码复用机制。无法通过Trait自身来实例化,它为传统继承增加了水平特性的组合。例如:
trait A
{
protected function fa () {
// TODO
}
}
class B
{
// TODO
}
class C extends B
{
use A;
}
- 从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。
- 通过逗号分隔,在 use 声明列出多个 trait,可以都插入到一个类中。
- 为了解决多个 trait 在同一个类中的命名冲突,需要使用 insteadof 操作符来明确指定使用冲突方法中的哪一个。
- as 操作符可以 为某个方法引入别名。 注意,as 操作符不会对方法进行重命名,也不会影响其方法。
- 正如 class 能够使用 trait 一样,其它 trait 也能够使用 trait。在 trait 定义时通过使用一个或多个 trait,能够组合其它 trait 中的部分或全部成员。
- Trait 定义了一个属性后,类就不能定义同样名称的属性,否则会产生 fatal error。 有种情况例外:属性是兼容的(同样的访问可见度、初始默认值)。
本作品采用《CC 协议》,转载必须注明作者和本文链接