PHP 多继承--代码复用新姿势
2018-03-15 16:49
441 查看
PHP多继承–代码复用新姿势
1、什么trait从PHP 5.4.0 开始 PHP 实现了一种新的代码复用方式 trait。
官网解释
1、Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。
2、Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。
2、如何使用trait呢?请看下面示例
<?php trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } function getReturnDescription() { /*2*/ } } class ezcReflectionMethod extends ReflectionMethod { use ezcReflectionReturnInfo; /* ... */ } class ezcReflectionFunction extends ReflectionFunction { use ezcReflectionReturnInfo; /* ... */ } ?>
3、优先顺序的问题
从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 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
相关文章推荐
- PHP代码的多继承 -》 PHP代码复用新的姿势 trait
- JS代码复用模式(继承,混合等)
- PHP面向对象深入研究之【继承】,减少代码重复
- PHP使用traits实现代码复用
- PHP实现代码复用神器:trait
- PHP面向对象设计模式-8.1继承和组合对比-代码实现
- PHP 实现代码复用的一个方法 traits新特性
- 子类继承父类 ( 代码复用 )
- php 5.4 全新的代码复用Trait详解
- 复制所有属性进行继承 转自 博客园 汤姆大叔 深入理解JavaScript系列(46):代码复用模式(推荐篇)
- PHP中实现代码复用的Trait方法的一些特性
- javascript代码复用模式-----现代继承
- PHP 实现代码复用的一个方法 traits新特性
- java代码复用(继承,组合以及代理)
- PHP 代码复用trait
- 代码复用原则:合理使用类组合和类继承
- php使用类继承解决代码重复的问题
- 代码复用原则:合理使用类组合和类继承
- 【PHP进阶学习】——Trait代码复用类
- php5.4.0以后加入trait实现代码复用【摘录】