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 相关文章推荐
php5编程中的异常处理详细方法介绍
Jul 29 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
php创建、获取cookie及基础要点分析
Jan 26 PHP
PHP生成条形码大揭秘
Sep 24 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
Dec 10 PHP
PHP实现图片上传并压缩
Dec 22 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
php使用CutyCapt实现网页截图保存的方法
Oct 03 PHP
php外部执行命令函数用法小结
Oct 11 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
phpstudy隐藏index.php的方法
Sep 21 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来自动调用不同服务器上的flash
2006/10/09 PHP
php常用Stream函数集介绍
2013/06/24 PHP
php自定义hash函数实例
2015/05/05 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
python发送arp欺骗攻击代码分析
2014/01/16 Python
django的model操作汇整详解
2019/07/26 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
好的演讲稿开场白
2013/12/30 职场文书
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
趣味游戏活动方案
2014/02/07 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
副总经理岗位职责
2015/02/02 职场文书
教师年度考核个人总结
2015/02/12 职场文书
母亲节寄语大全
2015/02/27 职场文书