PHP的Trait机制原理与用法分析


Posted in PHP onOctober 18, 2019

本文实例讲述了PHP的Trait机制原理与用法。分享给大家供大家参考,具体如下:

Trait介绍:

1、自PHP5.4起,PHP实现了一种代码复用的方法,称为trait。
2、Trait是为类似PHP的单继承语言二准备的一种代码复用机制。
3、Trait为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用method。
4、trait实现了代码的复用,突破了单继承的限制;
5、trait是类,但是不能实例化。
6、当类中方法重名时,优先级,当前类>trait>父类;
7、当多个trait类的方法重名时,需要指定访问哪一个,给其它的方法起别名。

示例:

trait Demo1{
 public function hello1(){
  return __METHOD__;
 }
}
trait Demo2{
 public function hello2(){
  return __METHOD__;
 }
}
class Demo{
 use Demo1,Demo2;//继承Demo1和Demo2
 public function hello(){
  return __METHOD__;
 }
 public function test1(){
  //调用Demo1的方法
  return $this->hello1();
 }
 public function test2(){
  //调用Demo2的方法
  return $this->hello2();
 }
}
$cls = new Demo();
echo $cls->hello();
echo "
";
echo $cls->test1();
echo "
";
echo $cls->test2();

运行结果:

Demo::hello
Demo1::hello1
Demo2::hello2

多个trait方法重名:

trait Demo1{
 public function test(){
  return __METHOD__;
 }
}
trait Demo2{
 public function test(){
  return __METHOD__;
 }
}
class Demo{
 use Demo1,Demo2{
  //Demo1的hello替换Demo2的hello方法
  Demo1::test insteadof Demo2;
  //Demo2的hello起别名
  Demo2::test as Demo2test;
 }
 public function test1(){
  //调用Demo1的方法
  return $this->test();
 }
 public function test2(){
  //调用Demo2的方法
  return $this->Demo2test();
 }
}
$cls = new Demo();
echo $cls->test1();
echo "
";
echo $cls->test2();

运行结果:

Demo1::test
Demo2::test

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP运行时强制显示出错信息的代码
Apr 20 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 PHP
php 微信开发获取用户信息如何实现
Dec 13 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
PHP数据库操作四:mongodb用法分析
Aug 16 PHP
PHP网页缓存技术优点及代码实例
Jul 29 PHP
tp5修改(实现即点即改)
Oct 18 #PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 #PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 #PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
Oct 18 #PHP
tp5.1 实现setInc字段自动加1
Oct 18 #PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 #PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 #PHP
You might like
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
python根据距离和时长计算配速示例
2014/02/16 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
简单了解python模块概念
2018/01/11 Python
python实现SOM算法
2018/02/23 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
python 实现按对象传值
2019/12/26 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
python实现马丁策略的实例详解
2021/01/15 Python
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
文职个人求职信范文
2013/09/23 职场文书
网上书店创业计划书
2014/01/12 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python