Was ist ein Merkmal? Anwendung-Szenarien von PHP-Eigenschaften

Quelle: Internet
Autor: Benutzer
Dieser Artikel bringt Ihnen den Inhalt über das, was das Merkmal ist? PHP Charakter Anwendung Szene, gibt es ein bestimmten Referenzwert, besteht ein Bedarf für Freunde können beziehen sich auf ein bisschen, ich hoffe, Ihnen zu helfen.

Warum verwenden Eigenschaften?

Die PHP-Sprache verwendet ein typisches Vererbungsmodell. In diesem Modell wir zuerst schreiben eine generische Stammklasse, grundlegende Funktionalität zu implementieren und dann schützen die Stammklasse, erstellen eine spezifischere Klasse, die die Umsetzung von der direkt übergeordneten Klasse erbt. Dies nennt man Vererbungshierarchie, und viele Programmiersprachen verwenden Sie dieses Muster.

Die meisten der Zeit, funktioniert dieses typische Vererbungsmodell gut. Aber was soll ich tun, wenn ich möchte, dass zwei unabhängige PHP-Klassen in ein ähnliches Verhalten Verhalten? Z. B. RetailStore und Auto zwei PHP-Klassen arbeiten sehr unterschiedlich, und es gibt keine gemeinsamen übergeordneten Klasse in der Vererbungshierarchie. Jedoch sollten alle zwei Klassen möglicherweise in breiten- und Längengrad mit Geokodierung Techniken konvertieren und dann auf einer Karte anzeigen.
Merkmale sind geboren, um solche Probleme zu lösen. Eigenschaften können auf modulare Weise in mehreren nicht verwandten Klassen von Menschen erreicht werden. Und Züge können auch Wiederverwendung von Code erleichtert.
Um dieses Problem zu lösen, war meine erste Reaktion eine übergeordneten Klasse Geocodable (was nicht gut ist), so dass sowohl Retalstore als auch Auto der Klasse erben. Diese Problemumgehung ist nicht gut, denn wir zwingen zwei unabhängige Klassen die gleichen Vorfahren Erben, und es klar ist, dass diese Vorfahren nicht zu der jeweiligen Vererbungshierarchie gehört.
Meine letzte Reaktion war eine Geocodable-Eigenschaft (die besten erfolgt) zu erstellen, definieren Sie den Brunnen um die Geokodierung Maschine nationalen Haar Loch dieser beiden Klassen von der Originalmethode zu erreichen, und setzen Sie dann in den zwei Klassen der gemischten Person Retailstore und Auto dieses Merkmal. Dabei wird der Vererbungshierarchie der alten Natur nicht schüren.

Zum Beispiel

Wir wollen die zwei Klassen von RetailStore und Auto bieten Geokodierung Fähigkeiten zu erkennen, dass Vererbung und Schnittstellen sind nicht optimal. Die Option wählten wir war erstellen ein Geocodable Merkmal, Rückkehr breiten- und Längengrad, und ziehen Sie sie in der Karte. Die Geocedable Merkmale sind wie folgt definiert:

?phptrait 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;}}

Geocodable Merkmale müssen nur die Eigenschaften und Methoden zur Geokodierung Implementierung definieren, und nichts anderes ist erforderlich, eine Geocodable-Eigenschaft, die drei Klasseneigenschaften definiert: eine Vertretung Adresse (String), eine Geokodierung-Objekt und ein Result-Objekt, die abgerufen wird, nachdem die Geocodierung verarbeitet wird. Wir haben auch vier öffentliche Methoden und eine geschützte Methode definiert. Die SetGeocoder ()-Methode wird verwendet, um Geocoder Objekte zu injizieren; Die SetAddress ()-Methode wird verwendet, um die Adresse eingestellt; Die Methoden Getlatitude () und GetLongitude () Rückkehr Längen- und Breitengrad, beziehungsweise; Die GeocodeAddress ()-Methode übergibt die Adressenzeichenfolge an die Geocoder-Instanz um die Ergebnisse von der Geokodierung verarbeitet.
Verwendung von Eigenschaften

PHP-Eigenschaften werden verwendet, ganz einfach, mit dem Einsatz von MyTrait; Aussagen können die Definition Körper der PHP-Klasse hinzugefügt werden. Im folgenden ist ein Beispiel. Natürlich sollte wenn tatsächlich verwendet, die MyTrait mit den entsprechenden PHP-Charakter-Namen ersetzt werden.

≪? Phpclass MyClass {-MyTrait; Dies ist die Implementierung der Klasse}

Empfehlung: Namespaces und Eigenschaften werden verwendet, um Menschen mit Einsatz Keywords zu führen, aber die Position des Führers ist anders. Namespaces, Klassen, Schnittstellen, Funktionen und konstanten leiten Menschen in der Definition einer Klasse, während Züge Menschen in der Definition einer Klasse zu führen. Der Unterschied ist klein, aber es ist wichtig. Und die Prämisse der Verwendung Verwendung ist, dass Sie die PHP-Datei eingeführt haben.

Wir haben gerade so viel zu tun. Jetzt können jede Retailstore-Instanz die Eigenschaften und Methoden von Geocodable Eigenschaften, nämlich zur Verfügung gestellt:

$store = new RetailStore();$store->setddress('420 9th Avenue, New York, NY 10001 USA');

Der PHP-Interpreter kopiert die Zeichen in den Körper der Definition der Klasse zum Zeitpunkt der Kompilierung.

Kontaktiere uns

Die Inhaltsquelle dieser Seite ist aus dem Internet, und vertritt nicht die Meinung von Alibaba Cloud; auf dieser Seite erwähnte Produkte und Dienstleistungen haben keine Beziehung zu Alibaba Cloud. Wenn der Inhalt der Seite Ihrer Meinung nach verwirrend ist, schreiben sie uns bitte eine E-Mail. Wir werden das Problem innerhalb von 5 Tagen nach Erhalt Ihrer E-Mail bearbeiten.

Wenn Sie Fälle von Plagiaten aus der Community feststellen, senden Sie bitte eine E-Mail an info-contact@alibabacloud.com und legen Sie entsprechende Beweise vor. Ein Mitarbeiter wird Sie innerhalb von 5 Werktagen kontaktieren.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.