接口是对多重继承的一种变相实现, Traits可以被视为一种加强型的接口.

 
先来看如下代码

trait Hello
{
private $name = 'chenqionghe';
public function sayHello()
{
echo 'hello ';
}
}
trait World
{
public $age = '18';
public function sayWorld()
{
echo 'world ! ';
}
}
class HandsonBoy
{
use Hello,World;
public function say()
{
echo 'i am '.$this->name;
}
}
$boy = new HandSonBoy();
$boy->sayHello();
$boy->sayWorld();
echo $boy->say();

上面代码的运行结果如下

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAR0AAAApCAIAAACHlGojAAACbElEQVR4nO2YMU/DMBCF/a8Z2Ss2VsTAhFiQYISJkYW1EjCwMDAiMcDEVCmq7cud8+Im1Vd9qprUOb+782ucprev325sP38ent8vbp82l3en59cnZ1cnZ1en59eby/uL26eH5/ft509PPQAzkV6/fgFAS7p5fAEALenj+w8AtOArAD34CkAPvgLQg68A9OArAD34CkAPvgLQg68A9OArAD34CkAPvgLQU/VVSimlmOvS7uU8f7CcHXr8gkN5LacOfZTMN8tyKlmWZ0tvS1gYbcbMx/Qct6/6dGTWfJdTyYI2uW58tRbWq3z5+vHV1PSXlpewAgtnyfrHfVV8GkmDlzPb4nkjTnFkTVUeZ3hYS8GYaI7nq1DY0bwadO4NDvXXLuZoC5yDPXqGl/j1dybw7L6XT36+eGicd15Ym92jJ2+DPV0x35EKxv/daRvpr4Azr2h/a+Ptuvn77tFTa65Hf08C+8D8d6j2U+GJFs2/2VfO7Jr7MZ+v8mo7K+CcMdrfUZ87yxiNEzWwvT770Oir6V30NCD/Nn+343TwVbjiwX2gUf/5fDVlvNxXH/XNXkh/T/BVo572inffB67dVyr9PRH4yrkcp6/j6H7Ajln8am8v4apgcKfR31e1mkxc3w3tmBI/v2W1rc8+WMtumEbtsJa853wtjiHJqKmh0Bhc7Hra3Q+dqpyds+f1XLJ3+fCDP1Rbf+3DKS0YjZ9f27Y+e3L4OyYcGfKlXPTVwlmBRFgRM90lDn7/CQs+uAKA4wNfAejBVwB68BWAHnwFoAdfAejBVwB68BWAHnwFoAdfAejBVwB68BWAHnwFoOcfzWR9r6LCeEgAAAAASUVORK5CYII=" alt="" />

这里的HandsonBoy同时实现了两个traits,从而使其可以分别调用两个Traits里的代码段.从代码就可以看出,traits和接口很像,不同的是traits是可以导入代码的接口.
从某种意义来说,traits和接口都是对"多重继承"的一种变相实现.

PHP中的加强型接口Traits的更多相关文章

  1. WebApi接口 - 如何在应用中调用webapi接口

    很高兴能再次和大家分享webapi接口的相关文章,本篇将要讲解的是如何在应用中调用webapi接口:对于大部分做内部管理系统及类似系统的朋友来说很少会去调用别人的接口,因此可能在这方面存在一些困惑,希 ...

  2. Java 中的集合接口——List、Set、Map

    Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组 ...

  3. C#中对IDisposable接口的理解

    http://blog.sina.com.cn/s/blog_8abeac5b01019u19.html C#中对IDisposable接口的理解 本人最近接触一个项目,在这个项目里面看到很多类实现了 ...

  4. Java中的内部接口

    什么是内部接口 内部接口也称为嵌套接口,即在一个接口内部定义另一个接口.举个例子,Entry接口定义在Map接口里面,如下代码: public interface Map { interface En ...

  5. C#中抽象类和接口

    下面是我做的测试: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  6. ODI中的临时接口

    在ODI 11g及后续的版本中,针对复杂的ETL处理,可分解为多个步骤,在中间步骤中使用临时接口,而不用建立相应的物理表,ODI会在处理过程中自动创建和删除这些中间表,从而降低ETL处理复杂度:同时, ...

  7. java 子接口中定义与父接口相同的方法

    今天碰到一个很有意思的问题,在java中如果子接口中定义了与父接口中已经有的方法会发生什么事情呢?比如: interface IRunnable extends Runnable{ void run( ...

  8. 如何通过图片在 HTTPS 网站中获取 HTTP 接口数据

    <script> (function() { var Decode=function(b){var e;e=[];var a=b.width,c=b.height,d=document.c ...

  9. 转:二十一、详细解析Java中抽象类和接口的区别

    转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...

随机推荐

  1. oracle创建新用户和用户表空间

    .首先,创建(新)用户: create user username identified by password; username:新用户名的用户名 password: 新用户的密码 也可以不创建新 ...

  2. 学以致用三十-----pycharm创建django项目忘记添加app

    记忆力有时候真的不是很好.因此有些操作步骤还是记录下来好了. pycharm版本-----2018.2.4 创建django项目 file-----newproject----- 创建的时候,appl ...

  3. mount的几个选项

    一.mount -o noatime表示在读文件时不去更改文件的access time属性了,所以该选项会提升mount操作的执行效率. 二.mount --bind:等同于 -o bind可用于挂载 ...

  4. fiddler抓包工具总结

    Fiddler 抓包工具总结 Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获.重发.编辑.转存等操作.也可以用来检测网络安全.反正好处多多,举之不尽呀!当年学习的时候也 ...

  5. [swarthmore cs75] Compiler 3 – Cobra

    课程回顾 Swarthmore学院16年开的编译系统课,总共10次大作业.本随笔记录了相关的课堂笔记以及第5次大作业. 增加了bool数据表示和比较运算符的支持,具体语法参考下图: 第一种int和bo ...

  6. hadoop2.7集群安装

    1. 按照官方文档对单节点的配置,将etc/hadoop/core-site.xml中的localhost改成node13. http://hadoop.apache.org/docs/r2.7.3/ ...

  7. Python 基础整理(未完)

    数据类型和变量: 整数:Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 计算机由于使用二进制,所以,有时候用十六 ...

  8. Hystrix 熔断机制

    熔断机制相当于电路的跳闸功能,即在一定时间内,错误比例达到一定数目时业务从原来流程转移到另外的流程处理.在一段时间后,恢复到原业务逻辑. 测试代码如下 /** * @author zimu * @de ...

  9. Windows 10 IoT Core 17115 for Insider 版本更新

    今天,微软发布了Windows 10 IoT Core 17115 for Insider 版本更新,本次更新只修正了一些Bug,没有发布新的特性. 一些已知的问题如下: F5 driver depl ...

  10. ESB开发WebService接口

    1 概述 在进行系统间集成时经常利用WebService,但是从建立WebService和调用的重复性和维护性的工作量都相当大. 首先简单介绍一下,ESB全称为Enterprise Service B ...