php traits 使用,PHP 中 Traits 简单使用方法
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 简单使用方法相关推荐
- 战棋游戏中的简单策略方法:基于群表示论的思想
战棋游戏中的简单策略方法:基于群表示论的思想 最近在开发一款自娱自乐的基于上世纪30年代历史背景的战棋游戏,需要为其设计一个策略算法,我一开始就想可能用比较传统的动态规划,恰逢本周周一周二中科院数学所 ...
- php traits 使用,php中traits的使用
php是单继承语言,但是如果想在一个class中实现多继承的话,可以使用traits代替. 关于使用.使用关键字trait: 从某个方面,可以理解为class,但是不能实例化 trait中可以定义pu ...
- Mendeley在开题报告中的简单使用方法
文章主要用于开题报告中参考文献的自动添加.排挡 安装环境:windows 10 office2010 1.下载Mendeley(直接百度搜索进行下载对应系统版本的mendeley) 2.安装Mend ...
- php traits作用,php中traits的理解和使用
在php的面向对象开发中,我们经常会遇到这样的一种情况: 有两个类 teacher 和 pupil类这两个类都有如下的一些属性 age,sex,address,school,email等.为此,我们抽 ...
- Linux中的简单截图方法(笔记本)
在笔记本中想在Linux系统中简单截图需要按下Fn和PrtSc Fn + PrtSc
- sql2005中的简单分页方法
select top 10 * from (select top 30 *,ROW_NUMBER() over (order by readerid desc) as rows1 from reade ...
- python字典由什么组成_在Python中,将由关键字对组成的列表添加到字典中最简单的方法是什么?...
试试这个:data = [] with open('names.dat') as database: for line in database: if line.strip(): # skip bla ...
- C语言中的* 简单记忆方法
在刚开始学C语言的时候,老师是这么教我的 :*是指针,**是指向指针的指针.int* p 的意思是p是一个指针,存放的内容是一个int类型--这些大概是书上对*的解释,最基本的例子是 int* p: ...
- Java中的简单工厂模式(转)
Java中的简单工厂模式 举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人 话说:"天地开辟,未有人民,女娲抟土为人."女娲需要用土造出一个个的人,但在女娲造出人之前, ...
最新文章
- deepin终端配置为英文
- Spring Cache 缺陷,我好像有解决方案了
- 百度贴吧登录过程分析
- 将EditText的光标定位到字符的最后面
- 在c++中使用for循环遍历map并删除map中的元素的注意事项
- SAP UI5 初学者教程之二十一 - SAP UI5 的自定义格式器(Custom Formatter) 试读版
- GPS实验三:GPS接收机野外数据采集
- CF464E-The Classic Problem【最短路,主席树】
- 使用Maven Failsafe和TestNG分别运行单元测试和集成测试
- 韦东山 IMX6ULL和正点原子_GPIO和Pinctrl子系统的使用在100ASK_IMX6ULL上机实验
- 【opencv学习】光流算法以及物体追踪算法(Lucas-Kanade算法)
- 中国三大运营商发声!要求纽交所复议退市决定
- MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)
- Oracle常见操作和命令
- CSS3属性——“box-flex”
- Fiddler抓包配置
- 运营天猫商城的注意事项
- python学习视频
- Excel中如何将列数据转换为行数据
- Internet Explorer无法打开站点,已终止操作
热门文章
- 量化交易入门阶段——MACD配合均值回归因子
- 新政出台,网络货运推动物流高质量发展
- 数字逻辑设计大程——以撒的结合(Verilog语言)
- 北斗智联「借款」1亿元,客户被抢单/搭载车型偏低价
- 数据中心架ToR 和 EoR 总结
- 有灵魂的工匠才能制作出有灵气的产品
- eclipse快速下载Emmet插件
- 推荐15款创建漂亮幻灯片的 jQuery 插件
- 美国运营商关闭4G网络,向中国运营商学习用低频段拯救5G
- C++ std::any、std::variant和std::optional的原位构造(In-Place Construction)