浅说PHP trait

作者: 温新

分类: 【PHP基础】

阅读: 2436

时间: 2019-09-22 08:01:50

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日

请登录后再评论