php是一种单一继承的语言,无法像java一样在一个class中extends多个基类来实现代码重用,PHP 5.4中的traits是新引入的特性,能解决这一代码重用的问题,它能让开发者在多个不同的class中实现代码重用。Traits和class在语义的定义上都是为了减少代码的复杂性,避免多重继承的问题。

raits可以理解为一组能被不同的类都能调用到的方法集合,但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 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 traits 使用,PHP 中 Traits 简单使用方法相关推荐

  1. 战棋游戏中的简单策略方法:基于群表示论的思想

    战棋游戏中的简单策略方法:基于群表示论的思想 最近在开发一款自娱自乐的基于上世纪30年代历史背景的战棋游戏,需要为其设计一个策略算法,我一开始就想可能用比较传统的动态规划,恰逢本周周一周二中科院数学所 ...

  2. php traits 使用,php中traits的使用

    php是单继承语言,但是如果想在一个class中实现多继承的话,可以使用traits代替. 关于使用.使用关键字trait: 从某个方面,可以理解为class,但是不能实例化 trait中可以定义pu ...

  3. Mendeley在开题报告中的简单使用方法

    文章主要用于开题报告中参考文献的自动添加.排挡 安装环境:windows 10  office2010 1.下载Mendeley(直接百度搜索进行下载对应系统版本的mendeley) 2.安装Mend ...

  4. php traits作用,php中traits的理解和使用

    在php的面向对象开发中,我们经常会遇到这样的一种情况: 有两个类 teacher 和 pupil类这两个类都有如下的一些属性 age,sex,address,school,email等.为此,我们抽 ...

  5. Linux中的简单截图方法(笔记本)

    在笔记本中想在Linux系统中简单截图需要按下Fn和PrtSc Fn + PrtSc

  6. sql2005中的简单分页方法

    select top 10 * from (select top 30 *,ROW_NUMBER() over (order by readerid desc) as rows1 from reade ...

  7. python字典由什么组成_在Python中,将由关键字对组成的列表添加到字典中最简单的方法是什么?...

    试试这个:data = [] with open('names.dat') as database: for line in database: if line.strip(): # skip bla ...

  8. C语言中的* 简单记忆方法

    在刚开始学C语言的时候,老师是这么教我的 :*是指针,**是指向指针的指针.int* p 的意思是p是一个指针,存放的内容是一个int类型--这些大概是书上对*的解释,最基本的例子是 int* p: ...

  9. Java中的简单工厂模式(转)

    Java中的简单工厂模式 举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人 话说:"天地开辟,未有人民,女娲抟土为人."女娲需要用土造出一个个的人,但在女娲造出人之前, ...

最新文章

  1. deepin终端配置为英文
  2. Spring Cache 缺陷,我好像有解决方案了
  3. 百度贴吧登录过程分析
  4. 将EditText的光标定位到字符的最后面
  5. 在c++中使用for循环遍历map并删除map中的元素的注意事项
  6. SAP UI5 初学者教程之二十一 - SAP UI5 的自定义格式器(Custom Formatter) 试读版
  7. GPS实验三:GPS接收机野外数据采集
  8. CF464E-The Classic Problem【最短路,主席树】
  9. 使用Maven Failsafe和TestNG分别运行单元测试和集成测试
  10. 韦东山 IMX6ULL和正点原子_GPIO和Pinctrl子系统的使用在100ASK_IMX6ULL上机实验
  11. 【opencv学习】光流算法以及物体追踪算法(Lucas-Kanade算法)
  12. 中国三大运营商发声!要求纽交所复议退市决定
  13. MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)
  14. Oracle常见操作和命令
  15. CSS3属性——“box-flex”
  16. Fiddler抓包配置
  17. 运营天猫商城的注意事项
  18. python学习视频
  19. Excel中如何将列数据转换为行数据
  20. Internet Explorer无法打开站点,已终止操作

热门文章

  1. 量化交易入门阶段——MACD配合均值回归因子
  2. 新政出台,网络货运推动物流高质量发展
  3. 数字逻辑设计大程——以撒的结合(Verilog语言)
  4. 北斗智联「借款」1亿元,客户被抢单/搭载车型偏低价
  5. 数据中心架ToR 和 EoR 总结
  6. 有灵魂的工匠才能制作出有灵气的产品
  7. eclipse快速下载Emmet插件
  8. 推荐15款创建漂亮幻灯片的 jQuery 插件
  9. 美国运营商关闭4G网络,向中国运营商学习用低频段拯救5G
  10. C++ std::any、std::variant和std::optional的原位构造(In-Place Construction)