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 相关文章推荐
?繁体转换的class
Oct 09 PHP
第三节--定义一个类
Nov 16 PHP
PHP-MySQL教程归纳总结
Jun 07 PHP
20个PHP常用类库小结
Sep 11 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
php引用传值实例详解学习
Nov 06 PHP
php实现天干地支计算器示例
Mar 14 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 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-fpm 参数的深入理解
2013/06/03 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
详解php实现页面静态化原理
2017/06/21 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
Prototype 工具函数 学习
2009/07/23 Javascript
javascript中length属性的探索
2011/07/31 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
python输入错误后删除的方法
2019/10/12 Python
python绘制封闭多边形教程
2020/02/18 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
企业为何需要商业计划书
2013/12/26 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
情况说明书格式范文
2014/05/06 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
解析MySQL binlog
2021/06/11 MySQL
javascript的setTimeout()使用方法总结
2021/11/20 Javascript