php基础之Trait

Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。

优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。 多个 trait 通过逗号分隔,在 use 声明列出多个 trait,可以都插入到一个类中。

多个trait间有方法名重复解决方法:使用insteadof 来指定使用哪个trait下对应的方法。

class Base{
    public function sayHello(){
        echo 'Hello';
    }
}
 
trait SayWorld{
    public function sayHello(){
        parent::sayHello();
        echo 'World!';
    }
}
 
trait A {
    public function sayHello(){
        echo 'hello !';
    }
}
 
class MyHelloWorld extends Base {
    use SayWorld,A{
        A::sayHello insteadof  SayWorld;
        SayWorld::sayHello as talk;
    }
}
 
$obj= new MyHelloWorld();
echo $obj->sayHello();//hello !
echo $obj->talk();// Hello World!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CSS语法

    选择符说明:CSS选择符(选择器) 选择符表示要定义样式的对象(标签名字),可以是元素本身,也可以是一类元素或者指定名称的元素,简单来说就是给对应的元素起个名称...

    爱知汇
  • WordPress找回忘记密码

    这种方法需要你的主机空间支持发送邮件功能,即支持mail()函数。Wordpress登录页面-忘记密码,按提示输入用户名或注册邮件,即可能过邮件收到密码激活链接...

    爱知汇
  • PHP 时区设置

    有时候使用date("Y-m-d h:i:s")时发现时间相差8小时,修改“/etc/php5/apache2/php.ini”:

    爱知汇
  • DevOps是云计算时代的开发与运营

    DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA...

    张善友
  • #DevOps 的前世今生# 4. DevOps 的文化

    在第一届 DevOpsDays结束后,DevOps 运动则如星火燎原之势在全球发展开来。随着 DevOps 思想的不断传播,相对的质疑和批评也从未停止过。以至于...

    顾宇
  • Docker容器CPU、memory资源限制

    在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同...

    飞天小子
  • facebook/swift:构建thrift http server(3)--CORS跨域

    版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net...

    用户1148648
  • Shell编程——Shell中的数学运算

    在Linux Shell中进行数学运算,通常可以使用的运算符有: 简单运算: let [] (()) 高级运算: expr bc 1、let命令 let命令...

    zhaozhiyong
  • Shell编程——Shell中的数学运算

    let命令是bash内置命令,可以实现简单的算术以及逻辑运算,通过help let命令,可以查询到let命令的具体使用方法。

    zhaozhiyong
  • 人工智能:高速

    前几天,编辑君为大家推送的「人工智能:缘起」,其中有一条留言提到达特茅斯会议。 ? 是的,让人工智能真正走进科学家视野的正是达特茅斯会议。 1955年夏天,符号...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券