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」标签,已有 773 位童鞋阅读过。
此处评论已关闭