什么是Trait?从PHP5.4.0开始,PHP实现了一种代码重用的方法,叫做Trait。Trait是一种用于单继承语言的代码重用机制。Trait类似于Class。它在传统继承的基础上增加了水平特性的组合。多个不相关的类不需要相互继承Trait,这样不相关的类就可以使用相同的属性和方法。简单使用echoHello();echo$one->index();echo$two->echoHello();结果输出HelloTrait索引HelloTrait。从基类继承的成员被特征插入的成员覆盖。优先顺序是当前类的成员覆盖Trait方法,Trait覆盖继承的方法。echoHello();echo$two->echoHello();echo$base->echoHello();结果是HelloOneHelloTraitHelloBase。第一类示例覆盖了基类和TraitTest,表明当前类的方法优先于它们的方法。类二的例子重写了基类,Trait的优先级高于继承的基类。类Base的例子重写了TraitTest,表示当前类的方法优先于Trait。用逗号分隔,可以将use语句中列出的多个特征插入到一个类中。echoHello();echo$one->echoWord();结果是Helloword!。如果两个traits都插入了一个同名的方法,如果冲突没有明确解决,就会产生致命错误。echoTest();echo$one->echoWord();echo$one->echoHello();输出结果:HelloTestwordTestHelloTestTwo。使用as作为别名,即Test::echoHelloasechoTest;在TraitTest中输出echoHello。使用insteadof运算符排除其他Traits,即用Test::echoWord代替TestTwo;输出为wordTest,使用echoWord修改方法的TraitTestControl权限echoHello();输出结果你好。在类一中使用as将echoHello设为私有,则无法通过类一访问echoHello。在类二中使用as先重命名,然后将新命名的方法设置为private,就可以正常访问原来Trait中的方法了。属性也可以像类一样在Trait中定义。这非常有用!转载地址PHP代码复用方法
