PHP之认识(二)关于Traits的用法详解


Posted in PHP onApril 11, 2019

PHP是单继承的语言,在PHP 5.4 Traits出现之前,PHP的类无法同时从两个基类继承属性或方法。Traits的出现解决了这一问题。

1、通过在类中使用use关键字声明要组合的Trait名称,而具体某个Trait的声明使用trait关键词,Trait不能直接实例化。具体用法:

<?php
trait Person{
	public $name="person";
	public function talk(){
		echo "我是{$this->name}<br/>";
	}
}
class Teacher{
	public function speak(){
		echo "我能教书<br/>";
	}
}
class Student extends Teacher{
	use Person;
	public function study(){
		echo "我需要学习<br/>";
	}
}
$student = new Student();
$student->talk();
$student->speak();
$student->study();
?>

2、Trait、父类和本类中都存在某个同名的属性或者方法是,会保留哪一个?

<?php
trait Person{
	public $name="person";
	public function talk(){
		echo "我是{$this->name}<br/>";
	}
	 public function hello() {
    echo "hello Person<br/>";
  }
}
class Teacher{
	public function talk(){
		echo "我能教书<br/>";
	}
	 public function hello() {
    echo "hello Teacher<br/>";
  }
}
class Student extends Teacher{
	use Person;
	public function talk(){
		echo "我需要学习<br/>";
	}
}
$student = new Student();
$student->talk();
$student->hello();

结果输出

我需要学习
hello Person

由结果可知

//trait的方法覆盖了基类Person中的方法,所以Person中的方法hello和speak被覆盖
//当方法或属性同名时,当前类中的方法会覆盖 trait的方法,所以此处talk会覆盖trait中的talk

3、如果多个Trait中包含同名方法或者属性时,会怎样呢?答案是当组合的多个Trait包含同名属性或者方法时,需要明确声明解决冲突,否则会产生一个致命错误。使用insteadof和as操作符来解决冲突,insteadof是使用某个方法替代另一个,而as是给方法取一个别名

以上所述是小编给大家介绍的PHP Traits的用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP中在数据库中保存Checkbox数据(1)
Oct 09 PHP
php,ajax实现分页
Mar 27 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
php实例分享之html转为rtf格式
Jun 02 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
PHP函数extension_loaded()用法实例
Jan 19 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 PHP
php 时间time与日期date之间的使用详解及区别
Nov 07 PHP
golang 调用 php7详解及实例
Jan 04 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
Apr 30 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 09 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 #PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
Apr 10 #PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 #PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 #PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 #PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 #PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 #PHP
You might like
php入门小知识
2008/03/24 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
vue实现通讯录功能
2018/07/14 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
Vue watch响应数据实现方法解析
2020/07/10 Javascript
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
pip安装python库的方法总结
2019/08/02 Python
通过代码实例了解Python异常本质
2020/09/16 Python
python 实现表情识别
2020/11/21 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
css3的transition属性详解
2014/12/15 HTML / CSS
医学生自我评价
2014/01/27 职场文书
学校万圣节活动方案
2014/02/13 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
小学中队委竞选稿
2015/11/20 职场文书
导游词之太湖
2019/10/08 职场文书
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python