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一些常用的正则表达式字符的一些转换
Jul 29 PHP
php Static关键字实用方法
Jun 04 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
php中call_user_func函数使用注意事项
Nov 21 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
php文件上传类完整实例
May 14 PHP
PHP入门教程之图像处理技巧分析
Sep 11 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 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
浅析51个PHP处理字符串的函数
2013/08/02 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
表单内同名元素的控制
2006/11/22 Javascript
json跟xml的对比分析
2008/06/10 Javascript
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
在职人员函授期间自我评价分享
2013/11/08 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
团日活动总结书
2014/05/08 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
投标邀请书范本
2015/02/02 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python