浅说PHP trait
1)什么是PHP中的trait?
trait是类但有不是类。但又什么都不是。PHP Trait是一种代码复用技术,为PHP单继承限制提供了一套灵活的代码复用机制。
2)、trait使用与注意事项
定义一个trait类,在其他类中使用则使用use关键字引入trait,引入trait的类中,可以使用$this关键字访问trait类中的方法。
注意:
① 一个类中可以通过use引入多个trait;
② 通过trait定义的“类”,不能实例化。可以通过把它动作类来使用,但是不能实例化它。
3)多个trait冲突解决
如果当前类使用了多个trait且trait中有同名方法时,如果没有明确访问哪一个trait方法就会报错。对此PHP官方给出了两种解决方法:
方法一:通过insteadof关键字指定使用哪一个trait方法。
C类use了A、B两个Trait类,且A、B两个类都存在a、b方法,则在C类use A、B类时使用insteadof声明冲突的解决方法即可:
use A, B {
B::a insteadof A; //a方法冲突时使用B类的a方法而不使用A类的a方法
A::b insteadof B; //b方法冲突时使用A类的b方法而不使用B类的b方法
}
方法二:通过as关键字为指定同名方法指定一个别名,仅仅只作用于当前类。
use A, B {
B::a as c; //声明B类的a方法为c,作用于该类
A::b as d; //声明A类的b方法为d,作用于该类
}
4)优先级问题
当前类 > Trait > 父类
我是夕阳何处寻,期待能和优秀的你一起同行!
2019年9月22日
请登录后再评论