MS-特性-Trait

  1. Trait (PHP5.4+)

Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中。
其作用有两个:表明类可以做什么;提供模块化实现。
Trait是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制

class biology{
    public $name;
    public function __construct($name)
    {
        $this->name = $name;
    }

    public function eat() {
        echo "Biology can eat"."
"; } } trait all_common{ function walk() { echo "$this->name can walk"."
"; } /** * 覆盖父类继承的eat方法 */ function eat() { echo "$this->name can eat"."
"; } } trait animal_common{ function speak() { echo "$this->name can speak"."
"; } } trait bird_common{ function fly() { echo "$this->name can fly"."
"; } } class people extends biology { use all_common; use animal_common; public function __construct($name) { parent::__construct($name); } public function smart() { echo "$this->name am very smarty"."
"; } } class eagle extends biology { use all_common; use bird_common; public function __construct($name) { parent::__construct($name); } public function wing() { echo "$this->name have wings"."
"; } /** * 覆盖trait中的eat方法 */ public function eat() { echo "I am a $this->name, I can eat"."
"; } } $p = new people("People"); $b = new eagle("Eagle"); $p->walk(); $b->walk(); $p->speak(); $b->fly(); $p->smart(); $b->wing(); $p->eat(); $b->eat();
  • Trait的优先级
    自身定义的方法>Trait的方法>父类继承的方法
    优先级高的,会覆盖优先级低的方法
    use多个Trait中不能含有同名方法

你可能感兴趣的:(MS-特性-Trait)