PHP多继承实现--Traits

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP多继承实现--Traits相关的知识,希望对你有一定的参考价值。

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

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的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp5.0Traits引入

tinkphp5.0 traits 的引入

php中traits学习笔记

让CI框架支持traits新特性

php如何实现多继承?

PHP系列之一traits的应用