IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP中traits是用来干嘛的?trait的语法作用特点。 -> 正文阅读

[PHP知识库]PHP中traits是用来干嘛的?trait的语法作用特点。

traits 是将一段代码 引入 类中 使用,是的代码(属性和方法)可以更加灵活的被复用。

那么什么使用需要 使用大 trait?

设想一下,加入有父类两个类 同时需要 相同的方法和属性,应该怎么办?我们都知道 父类是不可能 继承父类的,而这个时候,trait就派上用场了。

实际写一下代码吧。

<?php
header('content-Type:text/html;charset=utd-8');//防止中文乱码必备
trait ta{
	public function aa()
	{
	echo 'aa';
	}
}
//忽略这trait往下看

class people {
	public $name='野原小葵';
	public $sex='女';
	public $iq='-5';
	public $blog='dir321.com';
	public function say($food){
		echo $this->name=$name;
	}
}
//这里我们写了 两个 父类 people people2 
//此时有一个方法  public function aa(){echo 'aa';} //people people2 都需要这个方法时 我们要怎么办?
//很简单 我们只需要引入 trait 中的代码就可以了
class people2 {
	public function say($food){
		echo $this->name=$name;
	}
	//现在我们在这里 引入 trait中的代码
	use ta;
}
// 下面我们来看看 引入是否 成功
$xiaoxin=new people2();
$xiaoxin->aa();
//你会发现成功输出了 ta中的aa  这就是 trait最简单的用法。这里我们 只用people2引入了ta,people同时也可以引入,引入方法和people2的引入方法一样。这样 就成功实现了两个或多个父类同时共用方法和属性。
?>

//好了 继续 如果 来看一下 trait的优先级吧

<?php
//这里拿 两个类 来举例子 一个父类 people 和子类 child 
trait ta{
	public function aa(){
		echo 'aa';
}
}
class people{
	public function aa(){
		echo 'aa';
}
use ta;
}
class child extends people{
	public function aa(){
		echo 'aa';
}
use ta;
}
$xiaoming=new child();
$xiaoming ->aa();
//这里我们 实例化 子类 现在 输出的aa,是谁的aa呢? 父类的aa 还是父类中use的aa ?子类的aa 还是子类中use的aa?
//我们分析一下吧 首先子类中重写了父类中的aa方法,很显然执行的是 子类中的aa
//这样我们就可以确定,本类中的方法优先级高于 use引入的trait中的方法。
?>

//我们 继续使用这段代码 再来试验一下


<?php
trait ta{
	public function aa(){
		echo 'aa';
}
}
class people{
	public function aa(){
		echo 'aa';
}
use ta;
}
class child extends people{
	//public function aa(){
		//echo 'aa';
//}
//这里我们注释掉 子类中的aa 方法 但是保留 use引入的 tarit中的方法,现在再来看看优先级吧。
use ta;
}
$xiaoming=new child();
$xiaoming ->aa();
//很明显 这里 输出的aa  是 use引入的trait 中的aa方法,因为 use ta 中的代码与父类中的aa方法相同
//也就是说 相当于重写了 父类中的aa方法。
?>

再继续 看看 其他问题 ,如何引入多个 trait

<?php
//这里我们写了 两个 trait 看看如何引入
trait ta{
	public function aa(){
		echo 'aa';
	
	}
}
trait tb{
	public function bb(){
		echo 'b';
	
	}
}
class people{
	public function aa(){
		echo 'aa';
}
//usr 逗号分割 trait名称 即可
use ta,tb;
}
class child extends people{
	//public function aa(){
		//echo 'aa';
//}

use ta;
}
$xiaoming=new child();
$xiaoming ->aa();
//尝试输出一下
$xiaoming->bb();

?>

OK 在线 就太长太多了 trait其他的一些 特性 我会放到之后的文章里。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 08:52:47  更:2021-08-29 08:54:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:48:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码