php学习笔记--trait的使用(为实现多继承产生)

trait是为实现多继承产生,php5.4的新特性
使用方法如下:


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方法来实现替换或重命名。
如:


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
    }
}

你可能感兴趣的:(php)