trait是为实现多继承产生,php5.4的新特性
使用方法如下:
<?php
trait Tool{
function getName(){
echo "tool name";
}
}
class HammerTool{
use Tool
}
$tempTool = new HammerTool();
$tempTool->getName();//输出:tool name
优先级是,子类覆盖trait,trait覆盖子类继承的父类。
如果use几个trait,且trait中有相同的方法可用insteadof或as方法来实现替换或重命名。
如:
<?php
trait A{
function smallTalk(){
echo "A smallTalk";
}
function bigTalk(){
echo "A bigTalk";
}
}
trait B{
function smallTalk(){
echo "B smallTalk";
}
function bigTalk(){
echo "B bigTalk";
}
function middleTalk(){
echo "B middleTalk";
}
}
class Talker {
use A, B {
B::smallTalk insteadof A;//用B的smallTalk替换A的方法。
A::bigTalk insteadof B;
B::middleTalk as private myPrivateHello;//重命名为B
}
}