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 相关文章推荐
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
ajax在joomla中的原生态应用代码
Jul 19 PHP
制作安全性高的PHP网站的几个实用要点
Dec 30 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
PHP实现的DES加密解密实例代码
Apr 06 PHP
PHP安全下载文件的方法
Apr 07 PHP
thinkPHP3.2简单实现文件上传的方法
May 16 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 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中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
部署Python的框架下的web app的详细教程
2015/04/30 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
Python利用Beautiful Soup模块修改内容方法示例
2017/03/27 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
秋季运动会广播稿
2014/02/22 职场文书
初三学习决心书
2014/03/11 职场文书
中秋客户感谢信
2015/01/22 职场文书
2015年消防工作总结
2015/04/24 职场文书
消防演习通知
2015/04/25 职场文书
防暑降温通知书
2015/04/27 职场文书
孔繁森观后感
2015/06/10 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书