php trait用法是什么

php trait是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制,其使用语法如“trait ezcReflectionReturnInfo {function getReturnType() {/*1*/}…}”。

php trait是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制,其使用语法如“trait ezcReflectionReturnInfo {function getReturnType() {/*1*/}…}\ u v S !”。

php trait用法是什么

本文操作环境:winX 1 H z 1dows7系统、PHP7.1版,DELL G3电脑

1、php中的trait是啥?% v i l % X M )

  看上去既像类又像接口,其\ W W h a实都不是,Trait可以看做类的6 0 Z z 8 T ~ E b部分实现,可以混入一个或多个现有的PHP类中,其作用I 4 C 1 C % u j R有两个:表明类可以做什么;提供模块化实现。Trait是一种代码复用技术,为PHP的单继承限制提供t H D 1 U { c r了一套灵活的代码复用机制。

2、PHP版本要求:

  php5.4开始引入trait,其目的就是在于i | 9 Y – h E减少代码的重复,增加代码的复用性。

3、trait的使用场景:

  试想这样一种情况,当有一个方法需要在很多的类中使用时,该怎么处理?

  通常一般的处理方式会是,写一个基础类,在基类中实现这个方法,然后所有类都继承这个基类。

  这是一种处理方法,但不是最好的处理方式。通常采用继承的情况是:几个类具有很大的相似性。比如人作为一个基类,学生、工人、等继承“人”这个基类来扩展。

  由此,traC @ 3it的作用就出来了,trait 可以在多个类中使用。

4、trait如何使用:

  引用PHP手册中的例子:

  例子一

<?php
trait ezcReflectionReturnInfo {
function getReturnType() { /*1*/ }
functionD | 2 K getReturnDescription() { /*2*/ }
}
class ezcReft S D flectiv ( ` z qonMethod extends Re1 ( f J -flectionMethod {
use ezcReflectionReturnInfo;
/* ... */
}
class ezcRefle= U : 4 I B F 9 )ctionFD F z w V kunction exS b t R 1 /tends Refle^ c - d u CctionFunction {
use ezcReflectionReturnInfo;
/* ... */
}
?>

1、先声明一个trait;

2、在类中使用use将该L n % z * k Rtrait引入。

  是不是非常简单(手动逃)?需要注意的是trait的优先级。

5、traO 6 t , z B b d Pit的优先级

  (敲黑板)从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方g + : ! k法,而 trait 则覆盖了被继承的方法。

  优先级:自身方法>trait的方法>继承的方法(就是这样子的。)

看例子

<?php
trait HelloWorld {
public function sayHello() {
echo 'Hello World!';
}
}
class TheWorld8 T f , ` f e _IsNotEnough {
use HelloWorld;
public function sayHello() {
echo 'HelloS W T \ 1 8 O P Universe!';
}
}
$o = new TheWorldIsNotEnough();
$o-&g` 7 ; }t;sayHL K m y H m s Aello();//输出是 Hello Univea y ) drse!
?>

还有一点需要注意的是:多个tD U Rrait的使用。c 5 ; # Z A T B

<?phpO ! 1 F S \ V l
trait Hello {
public function saym 2 QHe= B S - ) } @ ello() {
echoc O ^ ) 'Hello ';
}
}
trait World {
public function sayWorld() {
echo 'WorH f . s :ld';
}
}
class MyQ n d 5 3HelloWorld {
use Hello, World;
public funcm 0 @ # y . |tion sayExclamationMark() {
echo '!';| 9 J j
}
}
$o = newf : Q MyHelloWorld();
$o->sayHello();
$U Q k 3o->sayWorld();
$o->say3 ~ z { (ExclamationMark();
?>

  总结:Trait是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制。

推荐学习:《PHP视频教? 0 o程》

以上就是php trait用c n r . Z E Z O法是什么的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码

声明:本文原创发布php中文网,转载请注明出= 4 } = L q处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

原创文章,作者:町子门户,如若转载,请注明出处:https://www.6fzz.com/12600.html

(0)
上一篇 2021年5月18日 上午10:33
下一篇 2021年5月18日 上午10:45

相关推荐

  • 移动互联网产品运营的4个方面和7个点

    要想快速地把一款产品推向市场,我认为一是病毒式的宣传,二是烧钱式的推广。你具备哪个?以上不具备,你只能用低成本…

    2021年6月27日
  • 如何在Debian 10 Linux上安装Vagrant

    Vagrant 是用于构建和管理虚拟机环境的开源命令行工具。 默认情况下,Vagrant可以运行在VirtualBox Hyper-V之上。本教程介绍了在Debian 10 Buster上安装Vagrant。 我们将使用VirtualBox,这是Vagrant的默认提供程序

    2021年8月17日
  • 解决高度塌陷问题

    问题概述: 父元素在文档流中高度默认是被子元素撑开的,当子元素脱离文档流以后,将无法撑起父元素的高度,也就会导致父元素的高度塌陷 父元素的高度一旦塌陷所有元素的位置将会上移,导致整个页面的布局混乱 方法1 开启父元素的BFC或hasLayout 1.1 BFC 1.1.1 Block Formatt …

    编程学习 2021年5月15日
  • 详解package-lock.json的作用

    详解package-lock.json 我们都知道package.json除了配置快捷的node script脚本, 最主要的作用还是: 用于记录下当前项目所应用到的依赖包, 但是既然都已经有了package.json文件了, 那么为什么项目中还需要一个package-lock.json呢? 本文就 …

    2021年10月29日
  • HTML学习笔记

    ##1、HTML简介 ###什么是网页? 网站是指在因特网上根据一定的规则,使用HTML等制作的用于展示特定内容相关的网页集合。网页是网站中的一“页”,通常是HTML格式的文件,它要通过浏览器来阅读。 网页是构成网站的基本元素,它通常由图片、链接、文字、声音、视频等元素组成。通常我们看到的网页,常见 …

    编程学习 2021年10月29日
  • php函数运用之希伯来文本如何转为可见文本

    上一篇文章中我们了解了对字符串进行编码和解码的方法,有需要的请看《php字符串函数运用之对字符串进行编码和解码》。这次我们向大家介绍希伯来文本转为可见文本的方法,有需要的可以参考参考。

    编程学习 2021年8月4日
  • 一份优秀的PRD应该包含哪些内容?

    说到产品经理岗,因为各自从事的细分领域不同、企业风格不同,因此做事的偏重点也会不尽相同。但从大的颗粒度来看无非…

    2021年6月27日
  • 20 岁发表 SCI 的学霸,梦想用算法改变世界

    2021 年 2 月,“新内容 新交互” 全球视频云创新挑战赛启幕。本次大赛由英特尔联合阿里云主办,与优酷战略技术合作,天池平台和阿里云视频云团队共同承办O * X \。大赛自开赛…

    AI资讯 2021年6月12日
  • excel图表如何添加辅助线

    添加方法:首先给数据添加参考列,生成一个新的图表;然后鼠标右键参考列的数据系列,在弹出的右键菜单中选择“设置数据系列格式”,选择“次坐标轴”;接着点击页面顶部的“设计”-“更改图标类型”;最后设置“次坐标轴”为“折线图”,点击“确定”即可。

    2021年5月10日
  • 第四十七篇:webpack的基本使用(一) –安装和配置webpack

    好家伙, 1.webpack的基本使用 写个例子:实现一个奇偶行变色列表 步骤如下: ① 新建项目空白目录,并运行 npm init-y命令,初始化包管理配置文件 package.json② 新建src源代码目录③ 新建 src->index.html 首页和src-> index.js 脚本文件④ …

    编程学习 2022年1月4日

发表评论

您的电子邮箱地址不会被公开。