menu
more_vert

PHP多继承实现--Traits

作者:dayu

---恢复内容开始---

PHP 5.4.0 开始,PHP 实现了代码复用的一个方法,称为 traits。

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

Trait 和一个类相似,但仅仅旨在用细粒度和一致的方式来组合功能。Trait 不能通过它自身来实例化。它为传统继承增加了水平特性的组合;

我理解的是Trait 就是一个不需要继承,可以复用的类。

Trait 的两个简单用例

Trait 的使用

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

trait Word{
    public function hello() {
        parent::Hello();
        echo ‘World!‘;
    }
}

class HelloWord extends Base {
    use World;
}

$o = new HelloWord ();
$o->Hello();
?>

在Traits里面调用Traits

trait Hello {
    public function Hello() {
        echo ‘Hello ‘;
    }
}

trait World {
    public function World() {
        echo ‘World!‘;
    }
}

trait HelloWorld {
    use Hello, World;
}

class base {
    use HelloWorld;
}

$o = new base();
$o->Hello();
$o->World();

参考地址:

http://www.php.net/manual/zh/language.oop5.traits.php

---恢复内容结束---

PHP多继承实现--Traits

原文地址:http://www.cnblogs.com/fishs/p/7201762.html