


Was ist ein Merkmal? Anwendungsszenarien von PHP-Eigenschaften
Der Inhalt dieses Artikels befasst sich mit der Frage: Was sind Eigenschaften? Die Anwendungsszenarien von PHP-Eigenschaften haben einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.
Warum Merkmale verwenden?
Die PHP-Sprache verwendet ein typisches Vererbungsmodell. In diesem Modell schreiben wir zunächst eine allgemeine Stammklasse, um Grundfunktionen zu implementieren, und erweitern dann diese Stammklasse, um eine spezifischere Klasse zu erstellen, die die Implementierung von der direkten übergeordneten Klasse erbt. Dies wird als Vererbungshierarchie bezeichnet und viele Programmiersprachen verwenden dieses Muster.
Meistens funktioniert dieses typische Vererbungsmodell gut. Was sollten Sie jedoch tun, wenn Sie möchten, dass sich zwei nicht verwandte PHP-Klassen ähnlich verhalten? Die beiden PHP-Klassen RetailStore und Car haben beispielsweise sehr unterschiedliche Funktionen und keine gemeinsame übergeordnete Klasse in der Vererbungshierarchie. Allerdings sollten beide Klassen in der Lage sein, mithilfe von Geokodierungstechniken in Breiten- und Längengrade umzurechnen und diese dann auf der Karte anzuzeigen.
Eigenschaften wurden geboren, um dieses Problem zu lösen. Merkmale können verwendet werden, um modulare Implementierungen in mehreren unabhängigen Klassen zu implementieren. Und Merkmale können auch die Wiederverwendung von Code fördern.
Um dieses Problem zu lösen, bestand meine erste Reaktion darin, eine übergeordnete Klasse Geocodable zu erstellen (das ist nicht gut) und sowohl Retalstore als auch Car diese Klasse erben zu lassen. Diese Lösung ist schlecht, weil wir zwei nicht verwandte Klassen zwingen, von demselben Vorfahren zu erben, und es offensichtlich ist, dass dieser Vorfahre nicht zu ihrer jeweiligen Vererbungshierarchie gehört.
Meine letzte Reaktion bestand darin, das Merkmal „Geokodierbar“ zu erstellen (was die beste Möglichkeit ist), die Klassenmethode „Geokodierbar“ zu definieren und zu implementieren und dieses Merkmal dann in die Klassen „Einzelhandelsgeschäft“ und „Auto“ zu mischen. Dadurch wird die natürliche Vererbungshierarchie nicht gestört.
Zum Beispiel
Wir hoffen, dass die Klassen RetailStore und Car Geokodierungsfunktionen bieten, und sind uns bewusst, dass weder Vererbung noch Schnittstellen die besten Lösungen sind. Die von uns gewählte Lösung bestand darin, ein geokodierbares Merkmal zu erstellen, den Breiten- und Längengrad zurückzugeben und es dann in einer Karte darzustellen. Die Definition des Merkmals „Geokodierbar“ lautet wie folgt:
?php trait Geocodable { /** @var string */ protected $address; /** @var \Geocoder\Geocoder */ protected $geocoder; /** @var \GeocoderlResult\Geocoded */ protected $geocoderResult; public function setGeocoder(\Geocoder\GeocoderIntertace $geocoder){ $this->geocoder = $geocoder; } public function setAddress($address){ $this->address = $address; } public function getLatitude(){ if (isset($this->geocoderResult) === false){ $this->geocodeAddress(); } return $this->geocoderResult->getLatitude(); } public function getlongitude(){ if (isset($this->geocoderResult) === false){ $this->geocodeAddress(); } return $this->geocoderResult->getLongitude(); } protected function geocodeAddress(){ $this->geocoderResult = $this->geocoder->geocode($this->address); return true; } }
Das Merkmal „Geokodierbar“ muss nur die Attribute und Methoden definieren, die zum Implementieren der Geokodierungsfunktion erforderlich sind, und nichts anderes ist erforderlich. Dieses Merkmal „Geokodierbar“ definiert drei Klassenattribute: a Darstellung Adresse (Zeichenfolge), eines ist das Geocoder-Objekt und das andere ist das Ergebnisobjekt, das nach der Geocoder-Verarbeitung erhalten wird. Wir definieren außerdem vier öffentliche Methoden und eine geschützte Methode. Die Methode setGeocoder() wird zum Einfügen des Geocoder-Objekts verwendet; die Methode setAddress() wird zum Festlegen der Adresse verwendet; die Methoden getlatitude() und getLongitude() geben den Breitengrad bzw. Längengrad zurück; an die Geocoder-Instanz, um den Längengrad zu erhalten. Das durch die Encoder-Verarbeitung erhaltene Ergebnis.
Wie nutzt man Eigenschaften?
Die Methode zur Verwendung von PHP-Merkmalen ist sehr einfach. Fügen Sie einfach die use MyTrait;-Anweisung zum Definitionskörper der PHP-Klasse hinzu. Hier ist ein Beispiel. Offensichtlich muss MyTrait bei der tatsächlichen Verwendung durch den entsprechenden PHP-Trait-Namen ersetzt werden.
<?php class MyClass{ use MyTrait; //这是类的实现 }
Vorschlag: Verwenden Sie das Schlüsselwort „use“, um sowohl Namespaces als auch Merkmale zu importieren, aber die Importorte sind unterschiedlich. Namespaces, Klassen, Schnittstellen, Funktionen und Konstanten werden außerhalb der Klassendefinition importiert, und Merkmale werden innerhalb der Klassendefinition importiert. Der Unterschied ist gering, aber wichtig. Und Voraussetzung für die Nutzung ist, dass Sie die PHP-Datei eingebunden haben.
Wir müssen nur so viel tun. Jetzt kann jede Retailstore-Instanz die Eigenschaften und Methoden verwenden, die vom Geocodable-Merkmal bereitgestellt werden, das heißt:
$store = new RetailStore(); $store->setddress('420 9th Avenue, New York, NY 10001 USA');
Der PHP-Interpreter kopiert das Merkmal und fügt es zur Kompilierungszeit in den Klassendefinitionskörper ein.
Verwandte Empfehlungen:
Detaillierte Erläuterung von PHP-Namespaces, Merkmalen und Generatoren
Das obige ist der detaillierte Inhalt vonWas ist ein Merkmal? Anwendungsszenarien von PHP-Eigenschaften. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

Eine offizielle Einführung in das nicht blockierende Merkmal der detaillierten Interpretation der nicht blockierenden Funktion von ReactPhp hat viele Fragen vieler Entwickler gestellt: "Reactphpisnon-BlockingByDefault ...
