php trait
Trait中的方法或属性会覆盖基类(如果有继承关系)中的同名的方法或属性,而本类会覆盖Trait中同名的方法,如果本类或基类和Trait有同名属性会冲突报错
基本定义
和class很像。Trait基本定义如下
trait Dog{
    public $name="dog";
    public function bark(){
        echo "This is dog";
    }
}基本使用
只要在类里use之后,就可以使用Trait里的方法
class Cat extends Animal{
    use Dog;
    public function drive(){
        echo "This is cat drive";
    }
}与当前类同名
trait很像继承,所以当当前类与trait类方法同名时候,当前类会覆盖trait方法
trait B
{
    public function test()
    {
        echo 1;
    }
}
class A
{
    use B;
    public function test()
    {
        echo 2;
    }
}
(new A)->test();
// 2引入多个Trait
用逗号分隔,如果有重名的方法或熟悉使用as取别名 使用insteadof表示替代
class dog{
    use trait1,trait2{
        trait1::eat insteadof trait2;
        trait1::drive insteadof trait2;
        trait2::eat as eaten;
        trait2::drive as driven;
    }
}参考文献
最后更新于 2021-04-20 03:41:52 并被添加「PHP trait」标签,已有 1473 位童鞋阅读过。
此处评论已关闭