PHP中的traits简单使用实例


Posted in PHP onMay 13, 2015

PHP 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好。其实际的目的,是为了有的场合想用多继承,但PHP又没多继承,于是就发明了这样的一个东西。
       Traits可以理解为一组能被不同的类都能调用到的方法集合,但Traits不是类!不能被实例化。先来例子看下语法:

<?php
trait myTrait{
  function traitMethod1(){}
  function traitMethod2(){}

}

//然后是调用这个traits,语法为:
class myClass{
  use myTrait;
}

//这样就可以通过use myTraits,调用Traits中的方法了,比如:
$obj = new myClass();
$obj-> traitMethod1 ();
$obj-> traitMethod2 (); 
>

接下来,我们探究下为什么要用traits,举个例子,比如有两个类,分别为business(商务者)和Individual(个人),它们都有地址的属性,传统的做法是,再抽象出一个这两个类都共同有特性的父类,比如client,在client类中设置访问属性address,business和individual分别继承之,如下代码:

// Class Client 
class Client { 
  private $address; 
  public getAddress() { 
    return $this->address; 
  }    
  public setAddress($address) { 
    $this->address = $address;  
  } 
} 
   
class Business extends Client{ 
  //这里可以使用address属性 
} 

// Class Individual 
class Individual extends Client{ 
//这里可以使用address属性 
}

但假如又有一个叫order类的,需要访问同样的地址属性,那怎么办呢?order类是没办法继承client类的,因为这个不符合OOP的原则。这个时候traits就派上用场了,可以定义一个traits,用来定义这些公共属性。

// Trait Address
trait Address{
  private $address;
  public getAddress() {
    eturn $this->address;
  }
  public setAddress($address) {
    $this->address = $address;
  }
}
// Class Business
class Business{
  use Address;
  // 这里可以使用address属性
}
// Class Individual
class Individual{
  use Address;
  //这里可以使用address属性
}
// Class Order
class Order{
  use Address;
  //这里可以使用address属性
}

这样就方便多了!

PHP 相关文章推荐
谈谈PHP语法(2)
Oct 09 PHP
php 上传功能实例代码
Apr 13 PHP
用PHP实现递归循环每一个目录
Aug 08 PHP
PHP的基本常识小结
Jul 05 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
php解析json数据实例
Aug 19 PHP
新浪SAE搭建PHP项目教程
Jan 28 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
Mar 17 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 PHP
Laravel配合jwt使用的方法实例
Oct 25 PHP
PHP中的traits实现代码复用使用实例
May 13 #PHP
浅谈本地WAMP环境的搭建
May 13 #PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 #PHP
简单解决新浪SAE无法上传文件的问题
May 13 #PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 #PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 #PHP
如何在HTML 中嵌入 PHP 代码
May 13 #PHP
You might like
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
Python简单获取自身外网IP的方法
2016/09/18 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
python 随机森林算法及其优化详解
2019/07/11 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
欧姆龙医疗欧洲有限公司:Omron Healthcare Europe B.V
2020/06/13 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
食品厂厂长岗位职责
2014/01/30 职场文书
小学语文课后反思精选
2014/04/25 职场文书
创先争优标语
2014/06/27 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL