在PHP中代码只能单继承,为了实现类代码的复用因此实现了trait,trait类与普通class不同它自身无法实例化,只能通过use在class中引用trait,然后这个类就能使用trait中的方法。
trait的基本使用使用中遇到的一些问题
你想自定义自己类中方法的权限而不是使用原来trait的方法权限
使用as来修改权限
类中的方法发生冲突
类中的方法有优先级: 本类中的方法 > trait的方法 > 继承的类中的方法
- 如果同名的话优先级高的会覆盖优先级低的,因此如果需要使用需要修改方法的名称
同样使用as,但如果也想修改权限则权限放在要修改的名称前面
- 两个类中的方法名相同,使用其中一个不使用另外一个
使用B中的smallTalk方法替换A中的smallTalk方法, 使用A的bigTalk替换B中的bigTalk
多使用Trait来实现代码复用, 能实现更为完善的面向对象的代码。
网友评论