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编程开发“虚拟域名”系统
Oct 09 PHP
兼容PHP5的PHP目录管理函数库
Jul 10 PHP
学习使用curl采集curl使用方法
Jan 11 PHP
PHP防止跨域提交表单
Nov 01 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
golang 调用 php7详解及实例
Jan 04 PHP
替换php字符串中的单引号为双引号的方法
Feb 16 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
Jul 17 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/05/09 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
Js+XML 操作
2006/09/20 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
JS实现标签页切换效果
2017/05/04 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
Python深入06——python的内存管理详解
2016/12/07 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
python学习基础之循环import及import过程
2018/04/22 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
安全标准化汇报材料
2014/02/03 职场文书
大学活动总结范文
2014/04/29 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers