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 编程的 5个良好习惯
Feb 20 PHP
php date()日期时间函数详解
May 16 PHP
PHP下escape解码函数的实现方法
Aug 08 PHP
PHP 命令行参数详解及应用
May 18 PHP
php的memcached客户端memcached
Jun 14 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
php接口数据加密、解密、验证签名
Mar 12 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
php中define用法实例
Jul 30 PHP
laravel 事件/监听器实例代码
Apr 12 PHP
laravel5.1框架model类查询的实现方法
Oct 08 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面试题集锦
2012/03/08 PHP
PHP 代码规范小结
2012/03/08 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
python使用super()出现错误解决办法
2017/08/14 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
python创建子类的方法分析
2019/11/28 Python
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
设计部经理的岗位职责
2013/11/16 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
会计岗位职责范本
2015/04/02 职场文书
停发工资证明范本
2015/06/12 职场文书
2015年中秋寄语
2015/07/31 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js
Python合并多张图片成PDF
2021/06/09 Python