PHP中的加强型接口Traits

时间:2022-10-21 12:03:30

接口是对多重继承的一种变相实现, 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. Windows Phone 8&period;1新特性 - 应用商店启动协议

    Windows Phone 8.1 Preview SDK 发布也有几个月了,之前断断续续也写过几篇 Windows Phone 8.1 新特性的文章,今天给大家介绍一下应用商店启动协议相关的知识. ...

  2. 让jquery&period;tmpl&period;js支持index序号

    在写Web程序时,想简单处理会使用JS模板,常用的是Jquery的jquery.tmpl.js插件.整个插件还是比较好用的,后续有机会结合实际应用案例,分享下应用方法. 本次文章想分享的一点是其中的一 ...

  3. Memcache&comma;Redis

    Memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. ...

  4. &lbrack;欧拉&rsqb; poj 2513 Colored Sticks

    主题链接: http://poj.org/problem? id=2513 Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Tota ...

  5. hdu--3782--找规律--xxx定律

    /* Name: hdu--3782--xxx定律 Date: 17/04/17 21:34 Description: 找规律题,又想打表了 */ /* for(int i=2;i<30;++i ...

  6. java导入项目有红色叹号

    原因:缺少jar包 解决:         选中项目  ->  右键  -> Build Path  -> Configer Builder Path  ->  删除掉有错的J ...

  7. 【一天一道LeetCode】&num;349&period; Intersection of Two Arrays

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given t ...

  8. Datagrip连接Mysql 和Hive

    连接Mysql file->data source general 填写host,port,user,password, 下载驱动,先别test connection 在ssh中填写host,p ...

  9. db powerdesign CDM、LDM、PDM、OOM的区别

        导读 在本篇文章中,你将会了解到PowerDesigner工具中的三种模型CDM,OOM,PDM的区别和联系. PowerDesigner 简称PD,是一种数据建模工具,适合于开发大型应用系统 ...

  10. Linux下无法清空回收站

    清空回收站发生错误,直接使用命令 sudo rm -rf ~/.local/share/Trash/files/* 搞定