Inhaltsverzeichnis
Zum Beispiel
Heim Backend-Entwicklung PHP-Tutorial Was ist ein Merkmal? Anwendungsszenarien von PHP-Eigenschaften

Was ist ein Merkmal? Anwendungsszenarien von PHP-Eigenschaften

Aug 29, 2018 pm 03:29 PM

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;
	}
}
Nach dem Login kopieren

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;
    //这是类的实现
}
Nach dem Login kopieren

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(&#39;420 9th Avenue, New York, NY 10001 USA&#39;);
Nach dem Login kopieren

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!

Erklärung dieser Website
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

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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

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

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

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.

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

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

Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Mar 28, 2025 pm 05:11 PM

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

Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Apr 01, 2025 pm 03:12 PM

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 � ...

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Mar 28, 2025 pm 05:12 PM

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.

Was genau ist das nicht blockierende Merkmal von ReactPhp? Wie gehe ich mit seinen blockierenden E/A -Operationen um? Was genau ist das nicht blockierende Merkmal von ReactPhp? Wie gehe ich mit seinen blockierenden E/A -Operationen um? Apr 01, 2025 pm 03:09 PM

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 ...

See all articles