Seit PHP5.4.0 hat PHP eine Code-Wiederverwendungsmethode namens Trait implementiert. Da es sich bei PHP um eine Einzelvererbung handelt, müssen Sie mehrere Basisklassen kombinieren. Durch die Entstehung von Trait werden diese Probleme vermieden. Der Vorteil von Trait besteht darin, dass es nach Belieben kombiniert werden kann und der Code klar ist. In diesem Artikel werden hauptsächlich Funktionen in PHP vorgestellt. Freunde in Not können sich darauf beziehen.
Vorwort
Ein ehemaliger Kollege wechselte den Job und wurde im Vorstellungsgespräch nach PHP-Eigenschaften gefragt. Ich habe es noch nie benutzt, also habe ich es nicht gut beantwortet. Ich habe es wahrscheinlich ein paar Mal benutzt, also habe ich darüber nachgedacht und die folgende Zusammenfassung zusammengestellt.
Merkmal
Merkmal ist ein bestimmtes Attribut oder eine bestimmte Methode, die einige Klassen (Klasse) haben sollten, und andere Klassen desselben übergeordneten Elements sollten die Einbeziehung dieser Attribute vermeiden Verwendung von Methoden.
Natürlich hängt dies auch mit der Fähigkeit des Entwicklers zusammen, Klassen zu abstrahieren. Einige Leute mit guten Abstraktionsfähigkeiten können die Verwendung von Merkmalen reduzieren, aber diese Situation sollte sonst unvermeidbar sein erscheint.
Es gibt eine andere Situation, nämlich die Verwendung von Merkmalen, die dazu beitragen können, Entwickler einzuschränken und Entwickler daran zu erinnern, auf bestimmte Attribute von Merkmalen zu achten, die während des Entwicklungsprozesses aufgerufen werden müssen Methoden.
Kollegen haben eine gute Frage gestellt: Hat die Schnittstelle nicht auch diese Rolle?
Keine Eile, schauen wir uns zuerst ein Beispiel an:
Wenn Sie beispielsweise verschiedene Daten auf der Website sammeln möchten, haben Sie die Spider-Klasse . Spider
entwickelt. Es gibt eine Methode namens request()
, die für Anfragen
<?php namespace XWSoul\Network; class Spider { public function request($url) { //do sth. } }Allerdings sind einige Websites während des Datenerfassungsprozesses empfindlich gegenüber Spidern und andere nicht. Für sensible Websites haben wir eine Lösung für die Verwendung eines Proxys angegeben Kriechgeschwindigkeit. Dies führt zu Spiders. Einige Unterklassen müssen einen Proxy verwenden und versuchen, wenn möglich keinen Proxy zu verwenden.Daher haben wir zu diesem Zeitpunkt ein neues Merkmal hinzugefügt Proxy:
<?php namespace XWSoul\Network; trait Proxy { protected $isProxy = false; public function useProxy($proxy) { //do sth proxy setups. $this->isProxy = true; return $this; } public function request($url) { if (!$this->isProxy) { throw new Exception("Please using proxy."); } //do sth. return parent::request($url); } }
Trait schreibt Spiders
-Methode neu und begrenzt, dass eine Ausnahme ausgelöst wird, wenn sie ohne Aufruf eines Proxys aufgerufen wird. request()
Zurück zur vorherigen Frage Verwendung und Schnittstelle des Merkmals (Schnittstelle) Was ist der Unterschied?
Die Einschränkungen der Schnittstelle sind vordefiniert und müssen zu Beginn der Definition implementiert werden. Sie können die Implementierung der Methode einschränken Aber der Aufruf der Methode kann nicht eingeschränkt werden. Der Aufruf hat die Methode bereits implementiert. Der Schlüssel liegt darin, dass er nur der Klasse, die sich selbst aufruft, Einschränkungen auferlegt (einen unsinnigen Satz). Klasse, die sich selbst nicht aufruft (wieder ein Unsinnssatz). Ja, und es zerstört nicht die Implementierung der Spider-Klasse. Spider ist immer noch derselbe.I Ich denke, die Verwendung von Merkmalen ist hier bereits sehr effektiv.Mehr dazu später
Jemand könnte sich entscheiden, eine andere Anfrage zu implementieren, zum Beispiel ProxyRequst. Ist das nicht das Ende? ? Was Sie gesagt haben, macht Sinn ... aber was ist, wenn ich einen anderen Proxy verwende und es Unterschiede in den Details der Anfrage gibt? Warum sollte ich auf eine so erfrischende Lösung verzichten? 🎜>Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird zum Lernen aller beitragen.
Verwandte Empfehlungen:
Merkmal Ausführliche Erklärung mit Bildern und Text zur Verwendung in PHP
Das obige ist der detaillierte Inhalt vonEine kurze Einführung in Merkmale in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

PHPtraitDTO:简化数据传输对象的开发引言:在现代的软件开发中,数据传输对象(DataTransferObject,简称DTO)起到了重要的作用。DTO是一种纯粹的数据容器,用于在层与层之间传递数据。然而,在开发过程中,开发人员需要编写大量的相似的代码来定义和操作DTO。为了简化这一过程,PHP中引入了trait特性,我们可以利用trait特

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

深入了解PHPtraitDTO的设计模式与实践Introduction:在PHP开发中,设计模式是必不可少的一部分。其中,DTO(DataTransferObject)是一种常用的设计模式,用于封装数据传输的对象。而在实现DTO的过程中,使用trait(特征)可以有效地提高代码的复用性和灵活性。本文将深入探讨PHP中traitDTO的设计模式与实践

去除方法:1、使用substr_replace()函数将首位数字替换为空字符串即可,语法“substr_replace($num,"",0,1)”;2、用substr截取从第二位数字开始的全部字符即可,语法“substr($num,1)”。

php有操作时间的方法。php中提供了丰富的日期时间处理方法:1、date(),格式化本地日期和时间;2、mktime(),返回日期的时间戳;3、idate(),格式化本地时间为整数;4、strtotime(),将时间字符串转为时间戳等等。

PHPtraitDTO:实现数据传输对象的简洁性与灵活性引言:在PHP开发过程中,经常会涉及到数据的传输与处理。而传输对象模式(DataTransferObject,简称DTO)是一种设计模式,它用于将数据在不同层之间传输。在传输过程中,DTO通过封装数据、提供公共访问方法来简化数据的操作。本文将介绍如何使用PHPtrait来实现DT


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool