traitは多重継承を実現するために作られたphp5.4の新機能です
使用方法は以下の通りです
<?phptrait Tool{functiongetName(){echo"tool name"; } }classHammerTool{useTool} $tempTool = newHammerTool();$tempTool->getName();//输出:tool name
優先順位はサブクラスがtraitをオーバーライドし、traitが親クラスをオーバーライドすることです。サブクラスに継承されます。
複数のトレイトを使用し、それらのトレイト内に同じメソッドがある場合は、 replaceof または as メソッドを使用してそれらを置き換えたり名前を変更したりできます。
例:
<?phptrait A{functionsmallTalk(){echo"A smallTalk"; }functionbigTalk(){echo"A bigTalk"; } }trait B{functionsmallTalk(){echo"B smallTalk"; }functionbigTalk(){echo"B bigTalk"; }functionmiddleTalk(){echo"B middleTalk"; } }classTalker {useA, B {B::smallTalkinsteadofA;//用B的smallTalk替换A的方法。A::bigTalk insteadof B; B::middleTalk asprivate myPrivateHello;//重命名为B} }