PHP----trait

查看框架源码的时候,发现trait这一个东西,在它里面可以定义属性和方法,很像类,但是却不是类。

1.和类的区别:

我们发现在类中我们可以使用trait,但是引用位置却不一样:
1.在类中引用类时,是在类的外部引用(use class_name)
2.在类中引用trait时,是在类的内部引用(use trait_name)

我们定义一个类之后,我们可以实例化这个类,但是trait却不可以实例化,trait更像是一段公共代码,直接将属性和方法植入类中,实现代码复用。

2.trait的属性:

当我们在trait中定义属性时,在引用它的类中可以直接使用,但是当我们在trait和引用类中同时定义相同属性之后会直接报错

3.trait的方法:

我们知道在trait中定义一个方法,在引用它的类中可以直接使用
1.当引用的类中定义了同名方法时,会调用类中的方法,类中的方法优先级高于trait中的方法优先级
2.当引用的类继承一个类,然后这个父类中定义了和trait中的同名方法,trait中的方法优先级高于父类方法的优先级
3.优先级顺序:
    类中方法 > trait中方法 > 父类中方法

4.引用多个trait:

在类中可以引用多个trait,但是当引用的两个trait中定义了同名方法时就会发生错误,这个时候我们可以指定使用哪个trait中的方法:

    use traitA,traitB{
        traitA::functionA insteadof traitB;
        traitB::functionB insteadof traitA;
        traitB::functionC  as traitbfunctionc;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • trait是什么 trait是为解决php单继承而准备的一种代码复用机制。trait解决了单继承的限制,使开发人员...
    PENG先森_晓宇阅读 1,173评论 0 0
  • 今天查看laravel的一些基础实现时,才发现有trait这个关键词,然后就赶紧去官方更新知识,以下是解析trai...
    LeeBoot阅读 258评论 0 1
  • 1、php中的trait是啥? 看上去既像类又像接口,其实都不是,Trait可以看做类的部分实现,可以混入一个或多...
    houxin阅读 171评论 0 0
  • Trait PHP 实现了一种代码复用的方法,称为trait。Trait是类似PHP的单继承语言而准备的一种代码复...
    NoFacePeace阅读 222评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,865评论 16 22

友情链接更多精彩内容