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注入点构造代码
Jun 14 PHP
php+javascript的日历控件
Nov 19 PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
php数组去重的函数代码
Feb 03 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
Apr 23 PHP
百度实时推送api接口应用示例
Oct 21 PHP
PHP浮点数精度问题汇总
May 13 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
php实现跨域提交form表单的方法【2种方法】
Oct 17 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
laravel框架中视图的基本使用方法分析
Nov 23 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
Python基础之函数用法实例详解
2014/09/10 Python
python比较两个列表是否相等的方法
2015/07/28 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
本科毕业生自荐信
2014/06/02 职场文书
人事任命书范文
2014/06/04 职场文书
好的旅游活动方案
2014/08/19 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
家庭经济困难证明
2015/06/23 职场文书
师范生小学见习总结
2015/06/23 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android
python处理json数据文件
2022/04/11 Python