接口是对多重继承的一种变相实现, 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. Java实现AES加密,异常java.security.InvalidKeyException: Illegal key size 的解决

    Java实现AES加密,抛出异常如下:java.security.InvalidKeyException: Illegal key size 代码参考 http://my.oschina.net/Ja ...

  2. JQuery跳出each循环的方法

    一.jquery each循环,要实现break和continue的功能: break----用return false; continue --用return ture; 二.jquery怎么跳出当 ...

  3. (转)RandomAccessFile类使用详解

    1.RandomAccessFile特点   RandomAccessFile是java Io体系中功能最丰富的文件内容访问类.即可以读取文件内容,也可以向文件中写入内容.但是和其他输入/输入流不同的 ...

  4. swagger 参数

    http://www.mamicode.com/info-detail-2213514.html

  5. JavaScript 平时记录

    1,JS中的this 见下面例子,注意函数中的函数 中的this指的是window对象了!!! document.addEventListener('click', function (e) { co ...

  6. Java中十六进制转换 Integer.toHexString()

    为了显示一个byte型的单字节十六进制(两位十六进制表示)的编码,请使用: Integer.toHexString((byteVar & 0x000000FF) | 0xFFFFFF00).s ...

  7. ADO SQL手写分页

    //实现层 ---------------------------------------------------------分割线---------------------------------- ...

  8. 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP

    不管是app的下载链接还是普通文件的链接在微信内置浏览器或者QQ内置浏览器都会被屏蔽.这是微信对第三方下载域名实施的拦截政策.被拦截了用户在微信内打开就会提示“已停止访问该网页”. 那么当我们遇到这个 ...

  9. MySQL 多表结构的创建与分析

    =====================多对一===================== create table press( id int primary key auto_increment, ...

  10. Codeforces831D Office Keys

    D. Office Keys time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...