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面向对象法则
Feb 23 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
Jun 21 PHP
PHP写日志的实现方法
Nov 05 PHP
php和editplus正则表达式去除空白行
Apr 17 PHP
深入理解PHP之OpCode原理详解
Jun 01 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 PHP
PHP 无限级分类
May 04 PHP
postman的安装与使用方法(模拟Get和Post请求)
Aug 06 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
Jan 04 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 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通用检测函数集合
2011/02/08 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
JS设计模式之责任链模式实例详解
2018/02/03 Python
对python中dict和json的区别详解
2018/12/18 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
网络安全方面的面试题
2016/01/07 面试题
演讲稿怎么写才完美
2014/01/02 职场文书
迟到检讨书400字
2014/01/13 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
运动会宣传口号
2014/06/09 职场文书
公司离职证明标准样本
2014/10/05 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
公司会议开幕词
2016/03/03 职场文书
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android