PHP中的Trait类

<?php
/**
 * trait是一种代码复用机制
 * trait类是解决了PHP单一继承的问题,即一个子类只能继承一个父类,而一个父类可以被多个子类继承
 * trait类不能被实例化
 * trait类的同名方法的优先级为:本类同名方法,trait类同名方法,父类同名方法
 * trait类中如果有两个同名方法,可以use triatName1,traitName2{traitName1::func insteadof trait2;trait2::func as trait2Func}
 * 可以用use继承trait类中的方法
 * 继承或者使用trait后,可以直接用$this->调用trait或者父类中的方法。
 */
trait Demo1
{
    public function hello1()
    {
        return __METHOD__;
    }
}
trait Demo2
{
    public function hello2()
    {
        return __METHOD__;
    }
}
class Demo
{
    use Demo1,Demo2;
    public function hello()
    {
        return __METHOD__;
    }
    public function test1()
    {
        return $this->hello1();
    }
    public function test2()
    {
        return $this->hello2();
    }
}
$obj = new Demo;
echo $obj->hello();
echo '<hr>';
echo $obj->hello1();
echo '<hr>';

echo $obj->hello2();

猜你喜欢

转载自blog.csdn.net/weixin_38468437/article/details/82078381