suchen
HeimBackend-EntwicklungPHP-TutorialEine kurze Einführung in Merkmale in PHP
Eine kurze Einführung in Merkmale in PHPMay 25, 2018 am 09:54 AM
phptrait介绍

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

Traits-Attribute und grundlegende Verwendung von PHP


Teilen der Eigenschaften und Funktionen von Traits 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!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

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

PHP trait DTO:简化数据传输对象的开发PHP trait DTO:简化数据传输对象的开发Oct 12, 2023 am 09:04 AM

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

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

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

php怎么设置implode没有分隔符php怎么设置implode没有分隔符Apr 18, 2022 pm 05:39 PM

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

深入了解PHP trait DTO的设计模式与实践深入了解PHP trait DTO的设计模式与实践Oct 12, 2023 am 08:48 AM

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

php怎么去除首位数字php怎么去除首位数字Apr 20, 2022 pm 03:23 PM

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

php有操作时间的方法吗php有操作时间的方法吗Apr 20, 2022 pm 04:24 PM

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

PHP trait DTO:实现数据传输对象的简洁性与灵活性PHP trait DTO:实现数据传输对象的简洁性与灵活性Oct 12, 2023 am 10:21 AM

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

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

MantisBT

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 neue Version

SublimeText3 Linux neueste Version

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool