首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php基础之Trait

php基础之Trait

作者头像
爱知汇
发布2020-10-10 10:06:18
3440
发布2020-10-10 10:06:18
举报

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!
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档