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 相关文章推荐
用ODBC的分页显示
Oct 09 PHP
php PDO中文乱码解决办法
Jul 20 PHP
用PHP实现的四则运算表达式计算实现代码
Aug 02 PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
php中用date函数获取当前时间有误的解决办法
Aug 02 PHP
PHP $_FILES中error返回值详解
Jan 30 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 PHP
PHP读取目录树的实现方法分析
Mar 22 PHP
PHP实现本地图片转base64格式并上传
May 29 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
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
初探nodeJS
2017/01/24 NodeJs
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
详解python之配置日志的几种方式
2017/05/22 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
python Opencv将图片转为字符画
2021/02/19 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
技术经理的自我评价范文
2013/12/03 职场文书
模范教师事迹材料
2014/02/10 职场文书
模范家庭事迹材料
2014/02/10 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
倡议书格式及范文
2015/04/29 职场文书
联村联户简报
2015/07/21 职场文书
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android