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新手上路(七)
Oct 09 PHP
cache_lite试用
Feb 14 PHP
PHP文件读写操作之文件读取方法详解
Jan 13 PHP
一个简单的网页密码登陆php代码
Jul 17 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
php获取文件大小的方法
Feb 26 PHP
在WordPress的文章编辑器中设置默认内容的方法
Dec 29 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
php blowfish加密解密算法
Jul 02 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
PHP实现网站访问量计数器
Oct 27 PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 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 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
vue自动添加浏览器兼容前后缀操作
2020/08/13 Javascript
简单的Python的curses库使用教程
2015/04/11 Python
Django admin美化插件suit使用示例
2017/12/12 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
对python中的高效迭代器函数详解
2018/10/18 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
纽约手袋品牌:KARA
2018/03/18 全球购物
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
老师自我鉴定范文
2013/12/25 职场文书
小班重阳节活动方案
2014/02/08 职场文书
爱情寄语大全
2014/04/09 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
垃圾桶标语
2014/06/24 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
致接力运动员加油稿
2015/07/21 职场文书
大学生党课感想
2015/08/11 职场文书
早上好问候语大全
2015/11/10 职场文书
《活见鬼》教学反思
2016/02/24 职场文书