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的宝库目录--PEAR
Oct 09 PHP
php cli 方式 在crotab中运行解决
Feb 08 PHP
Blitz templates 最快的PHP模板引擎
Apr 06 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
Jun 06 PHP
浅析PHP的静态成员函数效率更高的原因
Jun 13 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
php实现mysql数据库连接操作及用户管理
Nov 08 PHP
php格式化json函数示例代码
May 12 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
PHP数据库处理封装类实例
Dec 24 PHP
php中的钩子理解及应用实例分析
Aug 30 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 和 XML: 使用expat函数(三)
2006/10/09 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
python读取html中指定元素生成excle文件示例
2014/04/03 Python
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
python装饰器深入学习
2018/04/06 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
python上selenium的弹框操作实现
2020/07/13 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
给全校老师的建议书
2014/03/13 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
医德医风演讲稿
2014/05/20 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
详解Python牛顿插值法
2021/05/11 Python
JavaScript实现简单的音乐播放器
2022/08/14 Javascript