2.5PHP语言的Trait

Trait与接口的最大区别是:Trait包含了实现,而接口则需要指定一个实现该接口的类。

Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。所以,Trait内部可定义抽象方法,静态属性,静态方法,实例属性,实例方法。

个人见解:Trait功能是接口的升级版,类似于Ruby语言中的Module(模块)功能,不过Ruby语言中的Module(模块)功能实现了PHP语言中的接口,Trait,命名空间三大功能。

优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。

<?php
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}

class MyHelloWorld extends Base {
    use SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
?>

以上例程会输出:

Hello World!

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phpbasic/5030.html

发表评论

登录后才能评论