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 07 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
Jun 05 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
php合并数组中相同元素的方法
Nov 13 PHP
php使用google地图应用实例
Dec 31 PHP
PHP实现事件机制的方法
Jul 10 PHP
smarty高级特性之过滤器的使用方法
Dec 25 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
laravel如何开启跨域功能示例详解
Aug 31 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
js下利用控制器载入对应脚本
2010/07/17 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
全屏滚动插件fullPage.js使用实例解析
2016/10/21 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
python使用scrapy解析js示例
2014/01/23 Python
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
Python对文件操作知识汇总
2016/05/15 Python
Python线性回归实战分析
2018/02/01 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
Python适配器模式代码实现解析
2019/08/02 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
PHP统计代码行数的小代码
2019/09/19 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
诉前财产保全担保书
2014/05/20 职场文书
城市创卫标语
2014/06/17 职场文书
甜品店创业计划书
2014/08/14 职场文书
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers