您当前的位置:首页>ask频道

    为什么要使用trait?

提问时间:2017-07-21

    先来看一个情景,如果想要写一个继承模型该怎么做。
    最常见的一种时创建一个父类,让子类来继承父类。这个方法有一个问题,就是有可能子类之间是无关的,只是为了继承而写在一起,逻辑上说不通。
    第二种是创建一个接口,然后类来实现这个接口,这种方法比第一种方法要好,但是在两个类中有可能会重复实现相同的功能,违背了DRY原则(Don't Repeat Yourself)。
    最后也是最好的一种方法就是创建trait,定义并实现公有的方法,然后需要的时候混入这个trait即可。这么做不会搅乱子类原有的自然继承层次结构。
    PHP解释器在编译时会把trait复制粘贴到类的定义体中,但是不会处理这个操作引入的不兼容问题。如果trait假定类中有特定的属性活着方法(在trait中没有定义),要确保相应的类中有对应的属性和方法。

回复时间:2017-07-21

  • (妞妞)北北--给你给我幸福
    [1楼]:(妞妞)北北--给你给我幸福

    说的不错哦!!!

小猪迷