PHP中的trait是什么

PHP中的trait是什么

自PHP5.4.0起,PHP实现了一种代码复用的方法,称为Trait。因为PHP是单继承,当你需要多个区别的特性,就不得不去组合多个基类,Trait出现后就避免了这些问题,Trait的优势就是可以随意组合。以下是为大家搜索整理的PHP中的trait是什么,希望能给大家带来帮助!

trait

trait 是在一些类(Class)的应该具备的特定的属性或方法,而同父级的另外一些类应该避免包含这些属性和方法情况下使用的.

当然, 这也和开发者对类的抽象能力有关, 有些抽象能力好的, 可以减少对 trait 的使用 但是这种情况应该是无法避免的 不然 trait 出现就毫无意义了.

还有一种情况, 就是使用 trait 的时候, 可以起到的约束开发者的作用, 提醒开发者注意需要在开发的过程中调用 trait 的某些属性和方法.

同事则提出了一个好问题, 接口(interface) 不也是这个作用么?

不急, 让我们先看个例子:

比如你要收集网站上各类数据, 开发了 Spider 类. Spider 有个方法叫 request() 负责请求.

但是采集数据的过程中, 有些网站对蜘蛛敏感有些则不. 对于敏感的网站, 我们给出了一个使用代理的解决方案. 但是使用代理是会影响抓取速度的. 这就产生了 Spider 的子类有些需要用代理, 而能不用代理则尽量不用的情况.

于是这个时候我们新增了一个 trait Proxy:

isProxy = true; return $this; } public function request($url) { if (!$this->isProxy) { throw new Exception("Please using proxy."); } //do sth. return parent::request($url); }}

trait 重写了 Spider 的 request() 方法, 限定了在没有调用代理的情况下调用会抛出异常.

回到之前的问题, trait 这样的用法和 接口(interface) 有什么区别?

接口的约束是前置的是定义初始就必须实现的, 他可以约束方法的实现却无法约束方法的调用, trait 是一种后置的调用, 他已经实现了方法, 关键的是, 他只对调用了自身的类产生约束(废话一句), 而对没有调用自身的类不产生影响(再一句废话), 同时他是可复用的, 而且没有破坏 Spider 类自身的实现增加, Spider 还是那个 Spider.

我想 trait 的用法再这里已经很有效了吧.

后话

有人可能决定 另外实现一个 request 比如叫, proxyRequst 不就完了么? 你说的好有道理…然是如果我使用了不一样的 代理具体对请求上有细节差异怎么办呢? 在代码里不停的 if if if 么? trait 如此清爽的方案 为何要放弃呢?

拓展:PHP发展历程

PHP是一个拥有众多开发者的开源软件项目,最开始是Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。PHP是在1994年由RasmusLerdorf创建的,最初只是一个简单的用Perl语言编写的统计他自己网站访问者数量的程序。后来重新用C语言编写,同时可以访问数据库,1995年,PHP(Personal Home Page Tools)对外发表第一个版本PHP1。此后,越来越多的网站开始使用PHP,并且强烈要求增加一些特性,如循环语句和数组变量等,1995年发布的PHP2加入了对mySQL的支持。

Andi Gutmans和Zeev Suraski在为一所大学的项目中开发电子商务程序时发现PHP2功能明显不足,于是他们重写了代码发布了PHP3。PHP3是类似于现代PHP语法结构的第一个版本,PHP3的.最强大的功能是它的可扩展性,PHP3的新功能和广泛的第三方数据库、API的支持使得这样程序的编写成为可能。

PHP3***发布不久,Andi Gutmans和Zeev Suraski开始重新编写PHP代码。设计目标是增强复杂程序运行时的性能和PHP自身代码的模块性。经过不懈努力Zend引擎研发成功并且实现了设计目标,并在1999年中期引入 PHP。基于该引擎并结合了更多新功能的 PHP4于2000年5月正式发布。除了更高的性能以外,PHP4还包含一些关键功能,比如:支持更多的 web 服务器、HTTP Sessions 支持、输出缓冲、更安全的用户输入和一些新的语言结构。

PHP5于2004年7月正式发布,它的核心是Zend引擎2代(PHP7是Zend加强版3代),引入了新的对象模型和大量新功能,开始支持面向对象编程。随着PHP6经历长时间的开发流产后,PHP5发布了6个版本顽强的支撑着开源社区的发展,直到2015-12-03那天迎来了PHP 7.0的发布,其实PHP5.6已经包含了很多PHP6想实现的特性,它为PHP7的研发争取了宝贵的时间。不负众望PHP7.0对比PHP5.6性能整整提升了2倍,PHP7的成功发布让很多核心开发成员回归到PHP社区,并且在2020-11-26发布了PHP8。和php7系列相对比,PHP8对各种变量判断和运算采用更严格的验证判断模式,这点有利后续版本对jit的性能优化。

PHP语言作为一种高级语言,其特点是开源, 在设计体系上属于C语言体系,它可以让很多接受过高等教育的初学者能很快接受并完成入门学习,简单好上手容易找工作自然粉丝多。如果数据量大及访问压力大,可以集成redis、mysql分表分区分库、elasticsearch搜索引擎、消息队列写保护和php系统分布式集群部署等技术方案,缓解数据存储、服务访问和数据检索带来的巨大压力。

无论是大中小型项目,PHP都是一个十分适合的高级编程语言,是否适合就看项目研发团队的对它的掌握程度。 但是对于较大的和更为复杂的项目,最常见的php-fpm编程模式就显出它的薄弱了。针对PHP-fpm暴露出的一系列缺点问题,最简单靠谱的方案就是及时升级兼容PHP的高版本,PHP7.0.0对比PHP5.6性能提升了2倍,另外PHP7.4提供的Preloading预加载机制实现了部分程序常驻内存,获取了不错的性能提升,在PHP8又提供了高效的JIT (Just-In-Time即时编译)运算支持。另外水平更高的开发者可以转向难度更高的php-cli编程,它能解决大部分的系统性能问题,无论是PHP7和PHP8都支持这种模式的编程。

经过二十多年的发展,随着php-cli相关组件的快速发展和完善,PHP已经可以应用在TCP/UDP服务、高性能Web、WebSocket服务、物联网、实时通讯、游戏、微服务等非 Web 领域的系统研发。

根据W3Techs2019年12月6号发布的统计数据,PHP在WEB网站服务器端使用的编程语言所占份额高达78.9%。在内容管理系统的网站中,有58.7%的网站使用WordPress(PHP开发的CMS系统),这占所有网站的25.0%。

PHP中的trait是什么

转载请注明出处我优求知网 » PHP中的trait是什么

学习

众志成城抗击肺炎手抄报的内容

阅读(64)

本文为您介绍众志成城抗击肺炎手抄报的内容,内容包括众志成城抗击肺炎手抄报,手抄报内容众志成城抗击肺炎。无论是身处学校还是步入社会,大家都知道手抄报吧,手抄报除报头按内容设计、绘制外,每篇文章的标题也要作总体考虑。什么样的手抄报

学习

处暑的经典诗文

阅读(36)

本文为您介绍处暑的经典诗文,内容包括处暑经典诗句,处暑的散文诗。酷暑消,秋风凉,人间最美是初秋处暑,是二十四节气中的第十四个节气。处暑,即为“出暑”,是炎热离开的`意思。下面是为大家收集整理的处暑的经典诗文,欢迎阅读和收藏!

学习

Java和PHP的区别

阅读(49)

本文为您介绍Java和PHP的区别,内容包括java和php的区别是什么,java与php哪个好。Java和PHP都是编程语言,大家知道它们最大的区别就是一个是静态语言一个是动态语言吧。没错,Java是一种静态语言,PHP是一种动态语言。那它们还好哪些区别?下面

学习

油田的安全生产工作总结(精选)

阅读(84)

本文为您介绍油田的安全生产工作总结(精选),内容包括油田工人个人工作总结范文大全,油田安全生产月阶段性总结。不经意间,工作已经告一段落,回顾过去这段时间的工作,收获颇丰,制定一份工作总结吧。为了让您在写工作总结时更加简单方便,下面是收

学习

关于油田演讲稿(通用)

阅读(45)

本文为您介绍关于油田演讲稿(通用),内容包括油田工人演讲稿,油田管理演讲稿范文。演讲稿可以起到整理演讲者的思路、提示演讲的内容、限定演讲的速度的作用。随着社会不断地进步,演讲稿在演讲中起到的作用越来越大,怎么写演讲稿才能避免踩雷

学习

相约2035征文(精选)

阅读(59)

本文为您介绍相约2035征文(精选),内容包括红领巾相约2035征文,相约2035感想200字。在日常学习、工作和生活中,大家或多或少都会接触过征文吧,好的征文一般具有句段文采飞扬的特点。你知道征文怎样写才规范吗?下面是为大家整理的相约2035征文(

学习

四川大学2020年各省录取分数线及各专业录取分数线

阅读(360)

本文为您介绍四川大学2020年各省录取分数线及各专业录取分数线,内容包括2020年四川大学在安徽录取分数线,2020年四川大学在重庆录取分数线。高考填报志愿时,2020四川大学录取分数线是多少以及最近三年历年分数线是2021届考生非常重要的参

学习

《大外交》读书笔记(精选)

阅读(56)

本文为您介绍《大外交》读书笔记(精选),内容包括大外交读书笔记全集,大外交读书笔记2000字。品味完一本名著后,相信大家都积累了属于自己的读书感悟,这时就有必须要写一篇读书笔记了!到底应如何写读书笔记呢?下面是为大家整理的《大外交》读书

学习

复旦大学如何选导师

阅读(48)

本文为您介绍复旦大学如何选导师,内容包括复旦大学硕士导师怎么选,复旦大学研究生什么时候选导师。大家要重视联系导师的环节,但也不要过度焦虑,希望大家都能找到心仪的导师!以下为大家整理了复旦大学选导师的相关内容,希望对大家有所帮助!

学习

【推荐】2023年人生感悟格言集合

阅读(88)

本文为您介绍【推荐】2023年人生感悟格言集合,内容包括2023年最火最精辟的经典句子,2023年最精辟语录。【推荐】2023年人生感悟格言集合46句心念是最大的吸铁:好吸好,坏吸坏。下面是精心准备的人生感悟格言46句,仅供参考,大家一起来看看吧

学习

油田实习心得体会(精选)

阅读(65)

当我们经过反思,对生活有了新的看法时,可以记录在心得体会中,从而不断地丰富我们的思想。那么要如何写呢?以下是帮大家整理的油田实习心得体会,仅供参考,大家一起来看看吧。

学习

沃尔玛成功的关键因素

阅读(51)

本文为您介绍沃尔玛成功的关键因素,内容包括沃尔玛成功的关键因素有哪些,沃尔玛成功的原因总结。沃尔玛的成功大家都有目共睹,那么沃尔玛成功的关键因素是什么呢?精心为大家搜集整理了沃尔玛成功的关键因素,大家一起来看看吧。

学习

鼓励高三高考寄语

阅读(46)

本文为您介绍鼓励高三高考寄语,内容包括高三孩子高考誓师暨成人礼寄语,高三高考百日冲刺寄语。鼓励高三高考寄语无论是身处学校还是步入社会,大家都不可避免地要接触到寄语吧,寄语可分为名人寄语、圣诞寄语、新年寄语、班主任寄语、爱情寄

学习

tcl洗衣机故障代码说明

阅读(66)

本文为您介绍tcl洗衣机故障代码说明,内容包括tcl洗衣机常见故障代码大全,tcl洗衣机故障显示e3。洗衣机是家里的重要家电,尤其在大冬天的,谁都不想手洗衣服。但是一旦家里的洗衣机出现了故障,那么就是一件非常麻烦的事情。而洗衣机出现故障

学习

萨克斯基本构造组成

阅读(59)

本文为您介绍萨克斯基本构造组成,内容包括萨克斯管的构造分解图,萨克斯构造解。萨克斯由主体、脖管、笛头、哨片、哨箍、笛帽、挂带等主要零部件构成。下面为大家分享萨克斯基本构造组成,欢迎大家阅读浏览。

学习

C语言的关键字和控制语句有哪些

阅读(75)

本文为您介绍C语言的关键字和控制语句有哪些,内容包括c语言中控制语句关键字,c语言的主要关键字有哪些。C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。下面是相关的

学习

有什么用晨字组词的词语呢

阅读(66)

本文为您介绍有什么用晨字组词的词语呢,内容包括晨的组词有哪些词语,带晨字的唯美四字词语。文字像精灵,只要你用好它,它就会产生让你意想不到的效果。所以无论我们说话还是作文,都要运用好文字。只要你能准确灵活的用好它,它就会让你的语言

学习

江苏启动构造奇迹单元养老保险制度改良最新动静

阅读(52)

本文为您介绍江苏启动构造奇迹单元养老保险制度改良最新动静,内容包括全国范围内建立统一的养老保险,自主建立补充养老保险制度。养老保险,是为保障老年生活需求,提供养老金的退休养老保险类产品。平安养老险您量身定做最合适的养老保险

学习

高考一模分数有什么用

阅读(62)

本文为您介绍高考一模分数有什么用,内容包括高中一模考试接近高考分数吗,高考一模分数线是怎么算的。作为一项大规模的教学评价——高三一模,其重要性,是不言而喻的。如何认识高三一模的价值和意义,则是值得探讨的一件事。那么,高三一模考试

学习

建筑构造实习报告

阅读(68)

本文为您介绍建筑构造实习报告,内容包括建筑构造实习报告800字,建筑构造实习报告带。难忘的实习生活已经告一段落了,想必你的视野也得到了开拓,这个时候该写一份实习报告了吧。那么好的实习报告是什么样的呢?以下是为大家收集的建筑构造实

学习

喝完的瓶子有什么用

阅读(41)

本文为您介绍喝完的瓶子有什么用,内容包括喝完的瓶子有什么用处,用喝完的瓶子做手工。如果你有兴趣有时间的话可以做一些手工工艺品,可以自己去搜,如果不想做这些就丢了,回收废物利用,资源再生,而下面是整理的喝完的瓶子有什么用的回答,给