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

学习

出神入化的意思解释

阅读(151)

本文为您介绍出神入化的解释和造句,内容包括出神入化的意思解释,出神入化的造句,出神入化的解释并造句。出神入化的解释和造句出神入化,形容技艺达到了绝妙的境界。下面是为大家整理的出神入化的解释和造句,希望大家喜欢!出神入化成语解释

学习

出神入化的近义词是什么

阅读(136)

本文为您介绍出神入化的近义词,内容包括出神入化的近义词是什么,出神入化下一句是什么,出神入化的近义词和反义词。出神入化的近义词出神入化,汉语成语,拼音是chūshénrùhuà,意思是形容文学艺术或技艺高超达到了绝妙的境界,还形容超脱了

学习

出神入化的近义词成语

阅读(150)

本文为您介绍出神入化的近义词,内容包括出神入化的近义词成语,出神入化下一句是什么,出神入化的近义词是什么意思。出神入化的近义词出神入化,汉语成语,拼音是chūshénrùhuà,意思是形容文学艺术或技艺高超达到了绝妙的境界,还形容超脱了

学习

生活伤感句子句句扎心

阅读(124)

本文为您介绍生活伤感句子,内容包括生活伤感句子句句扎心,生活伤感句子有哪些,生活伤感句子表达心情失落。生活伤感句子90句今画江湖录,当属不良人,相隔阴阳路,灵主不饶魂,纷争人未尽,举酒杯莫停,元易交汇处,换世主沉浮。以下是为大家整理的生

学习

人生感悟伤感句

阅读(120)

本文为您介绍人生感悟伤感句子,内容包括人生感悟伤感句,人生感悟的句子伤感,人生感悟的句子幽默伤感。人生感悟伤感句子在学习、工作乃至生活中,我们常常会因为所接触的人和事而备受启迪,这时就可以通过文字的方式把这些感悟都记录下来。

学习

感悟人生的伤感句子经典

阅读(136)

本文为您介绍感悟人生的伤感句子,内容包括感悟人生的伤感句子经典,感悟人生的伤感句子朋友圈励志,感悟人生伤感歌曲。感悟人生的伤感句子在现实生活或工作学习中,我们难免会萌生一些新的感悟,为了记录自己的所思所想,我们可以写一篇感悟的

学习

给男生的毕业留言

阅读(120)

本文为您介绍毕业留言十字唯美短句,内容包括给男生的毕业留言,写给男生的毕业留言霸气,给男生的毕业留言幽默。给男生的毕业留言集锦临近毕业时,就不得不需要写毕业留言,借助毕业留言可以对师生朋友表达自己的鼓励和祝福。那么要怎样才能

学习

咏荷的诗句古诗

阅读(126)

本文为您介绍咏荷的诗句,内容包括咏荷的诗句古诗,咏荷的诗句以及推荐词,咏荷的诗句是什么。咏荷的诗句在平凡的学习、工作、生活中,大家最不陌生的.就是诗句了吧,诗句饱含丰富的感情和想象。那什么样的诗句才是大家都称赞的呢?下面是整理的

学习

咏荷的诗句有哪些

阅读(118)

本文为您介绍咏荷的诗句,内容包括咏荷的诗句有哪些,咏荷的诗句和画,咏荷的诗句五言古诗大全。咏荷的诗句在平凡的学习、工作、生活中,大家最不陌生的.就是诗句了吧,诗句饱含丰富的感情和想象。那什么样的诗句才是大家都称赞的呢?下面是整理

学习

关于荷的诗句大全

阅读(122)

本文为您介绍关于荷的诗句,内容包括关于荷的诗句大全,关于荷花的诗句,关于鹤的诗句。关于荷的诗句在日常学习、工作抑或是生活中,大家都知道一些经典的诗句吧,诗句能使人们自然而然地受到语言的'触动。那什么样的诗句才是经典的呢?以下是为

学习

电话礼仪中错误的是

阅读(121)

本文为您介绍电话礼仪中的禁忌有哪些,内容包括电话礼仪中错误的是,电话礼仪禁忌用语,电话礼仪三大禁忌。电话礼仪中禁忌的是什么在我们平时讲电话中,有没有让人反感呢?那么电话礼仪的禁忌是什么呢?以下是精心整理的电话礼仪中禁忌的是什

学习

化学中物质的定义

阅读(128)

本文为您介绍化学中物质的定义是什么,内容包括化学中物质的定义,在化学中物质的定义是什么,化学中的物质是什么意思。化学中物质的定义是什么物质有六种存在形态:固态、液态、气态、等离子态、玻色-爱因斯坦凝聚态、费米子凝聚态下面是百

学习

爱情的暖心句子

阅读(127)

本文为您介绍爱情的暖心句子合集,内容包括爱情的暖心句子,爱情暖心的句子简短,爱情简短暖心句子。爱情的暖心句子合集在平时的学习、工作或生活中,大家都收藏过令自己印象深刻的句子吧,句子的组成部分,包括主语、谓语、宾语、定语、状语、

学习

爱情最暖心短句

阅读(122)

本文为您介绍爱情暖心的句子简短,内容包括爱情最暖心短句,爱情的感动句子唯美短句,爱情语录打动人心的句子简短。爱情最暖心的句子(精选60句)无论在学习、工作或是生活中,大家最不陌生的就是句子了吧,根据语气的不同句子可以分为陈述句、疑

学习

高二政治必修一知识框架详细

阅读(119)

本文为您介绍高一政治必修一知识点总结框架图,内容包括高二政治必修一知识框架详细,高一政治必修二知识点总结,高中必修一政治十五条疑难知识点。高二政治必修一知识点整体与部分辩证关系原理在平时的学习中,是不是经常追着老师要知识点?

学习

杭州西溪湿地一日游详细攻略

阅读(100)

本文为您介绍西溪湿地一日游最佳路线,内容包括杭州西溪湿地一日游详细攻略,游杭州西溪湿地作文400字,原创诗雨中游西溪湿地。游西溪湿地作文(精选27篇)在日常生活或是工作学习中,大家或多或少都会接触过作文吧,作文是一种言语活动,具有高度的

学习

我的故事你的酒头条文章

阅读(191)

本文为您介绍我有故事你有酒吗美文,内容包括我的故事你的酒头条文章,我有故事你有酒吗完整版,我出酒你出故事的文案。我有故事你有酒吗美文美文(belles—lettres),《法汉词典》译为“纯文学”,法文《拉鲁斯普通名词大词典》中的定义是:“文学

学习

端午相关的诗歌

阅读(171)

本文为您介绍关于赞美端午的现代诗歌,内容包括端午相关的诗歌,情暖端午的诗歌,关于端午情的一首诗歌。优美诗歌《端午情》常常把你思念,喜欢你青涩的外表,爱上你美丽的内心,总是忍不住想吻你,我要大声说‘我爱你——粽子’,呵呵,端午节到了,愿

学习

拿来主义教案详细

阅读(91)

本文为您介绍拿来主义教案,内容包括拿来主义教案详细,拿来主义教案导语好的原因,拿来主义教案中职。拿来主义教案作为一位兢兢业业的人民教师,常常要写一份优秀的教案,教案是教材及大纲与课堂教学的纽带和桥梁。写教案需要注意哪些格式呢?

学习

余旭牺牲详细过程

阅读(91)

本文为您介绍余旭烈士牺牲经过,内容包括余旭牺牲详细过程,余旭的牺牲奉献精神,余旭牺牲后获得了什么荣誉。余旭牺牲心得体会我们心里有一些收获后,可以通过写心得体会的方式将其记录下来,如此就可以提升我们写作能力了。很多人都十分头疼

学习

与颜色相关的英语短语表达

阅读(200)

本文为您介绍关于颜色的英语短语,内容包括与颜色相关的英语短语表达,关于颜色的英语词组,关于颜色的各种英语短语。颜色相关的英语短语英语短语也是英语学习中重要的一项,为了帮助大家更好地记忆短语,下面,整理了一些与颜色相关的英语短

学习

餐饮年会策划方案详细流程

阅读(119)

本文为您介绍餐饮年会策划方案,内容包括餐饮年会策划方案详细流程,餐饮行业年会策划方案,餐饮年会总结发言。餐饮年会策划方案为了确保事情或工作有序有效开展,通常会被要求事先制定方案,方案是阐明具体行动的时间,地点,目的,预期效果,预算及