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

 更新时间:2019年04月11日 08:34:01   作者:寂寞的小猪74  
这篇文章主要介绍了PHP Traits的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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的用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • laravel中的一些简单实用功能

    laravel中的一些简单实用功能

    这篇文章主要给大家介绍了关于laravel中一些简单实用功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • PHP生成短网址的3种方法代码实例

    PHP生成短网址的3种方法代码实例

    这篇文章主要介绍了PHP生成短网址的3种方法代码实例,分别为纯随机生成法、枚举生成法、62位生成法,需要的朋友可以参考下
    2014-07-07
  • PHP判断指定时间段的2个方法

    PHP判断指定时间段的2个方法

    有时我们需要在一天中的某个时间段进行某项任务,或者在一天中的不同小时里进行不同的任务,使用PHP如何实现呢,下面的两个例子都可以解决这个问题
    2014-03-03
  • PHP生成随机密码4种方法及性能对比

    PHP生成随机密码4种方法及性能对比

    这篇文章主要介绍了PHP生成随机密码4种方法及性能对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • PHP模糊查询的实现方法(推荐)

    PHP模糊查询的实现方法(推荐)

    下面小编就为大家带来一篇PHP模糊查询的实现方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • php实现批量压缩图片文件大小的脚本

    php实现批量压缩图片文件大小的脚本

    这篇文章主要介绍了php实现把某个目录下的图片进行批量压缩文件大小的脚本,单反拍的图片,体积太大,所以要压缩,需要的朋友可以参考下
    2014-07-07
  • PHP获取浏览器信息类和客户端地理位置的2个方法

    PHP获取浏览器信息类和客户端地理位置的2个方法

    这篇文章主要介绍了PHP获取浏览器信息类和客户端地理位置的2个方法,需要的朋友可以参考下
    2014-04-04
  • php微信公众号开发之翻页查询

    php微信公众号开发之翻页查询

    这篇文章主要为大家详细介绍了php微信公众号开发之翻页查询功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • thinkPHP框架自动填充原理与用法分析

    thinkPHP框架自动填充原理与用法分析

    这篇文章主要介绍了thinkPHP框架自动填充,结合实例形式较为详细的分析了thinkPHP框架自动填充的原理、使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-04-04
  • php序列化函数serialize() 和 unserialize() 与原生函数对比

    php序列化函数serialize() 和 unserialize() 与原生函数对比

    这篇文章主要介绍了php序列化函数serialize() 和 unserialize() 与php原生序列化方法对比,有需要的小伙伴可以参考下。
    2015-05-05

最新评论