Wie man PHP -Code effektiv wiederverwendet - Einführung in PHP -Merkmale
- 2291
- 52
- Susanne Stoutjesdijk
Ursprünglich entwickelt von Rasmus Lerdorf
Im Jahr 1994 ist PHP eine der am häufigsten verwendeten Programmiersprachen für allgemeine Purpose. Ursprünglich als Vorlagensprache geboren, entwickelte sie sich in den Jahren zu einer vollwertigen Sprache mit richtiger Sprache Oop
(Objektorientierte Programmierung) Unterstützung. Seine neueste Inkarnation, 7.X
, führten neue Funktionen wie vor Rückgabetypdeklaration
Für Funktionen und enorme Leistungsverbesserungen. PHP ist a Einzelvererbung
Sprache: Dies bedeutet, dass eine Klasse nur für eine Eltern- oder Basisklasse erben kann. Um dieses Problem zu überwinden, wurde in der Sprache ein Feature eingeführt: Züge
. In diesem Artikel werden wir sehen, wie man es benutzt und wie es funktioniert.
In diesem Tutorial lernen Sie:
- So verwenden Sie Merkmale in PHP
Softwareanforderungen und Konventionen verwendet
Kategorie | Anforderungen, Konventionen oder Softwareversion verwendet |
---|---|
System | OS-unabhängig |
Software | Php |
Andere | Kenntnis von PHP und grundlegenden objektorientierten Programmierkonzepten |
Konventionen | # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können |
Einführung von Merkmalen
PHP ist eine einzelne Vererbungssprache: Eine untergeordnete Klasse kann nur von einem einzigen Elternteil erben . Dies könnte ein Problem in Bezug auf die Wiederverwendung von Code darstellen, wenn die Klasse mehrere Verhaltensweisen erben muss: Züge
sind eine Möglichkeit, dieses Problem zu lösen. Mal sehen, wie. Die Art und Weise, wie wir ein Merkmal erstellen, ist sehr ähnlich wie bei der Erstellung einer Klasse, aber einer der großen Unterschiede zwischen Merkmalen und Klassen ist, dass ein Merkmal ein Merkmal kann nicht instanziiert werden, kann aber nur in einer Klasse oder in einem anderen Merkmal verwendet werden. Erstellen eines Merkmals Es ist einfach:
Kopieren Der Code, der in "Dreitone" enthalten ist, ist sehr trivial: Er protokolliert nur eine Nachricht. Mal sehen, wie wir es in einer Klasse verwenden können:
Klassentest verwenden Sie MasaTone;
Kopieren Der Schlüssel hier ist der verwenden
Schlüsselwort, das, wenn wir in einer Klasse verwendet werden, die im Merkmal gruppierten Funktionen „importieren“. Es ist schwer vorstellbar, dass ein Fall, in dem die oben erstellte Klasse, die wir erstellt haben. Da die Klasse das Merkmal „Mabroitone“ verwendet, können wir jedoch auf die „Protokoll“ -Methode zugreifen:
$ test = neuer Test (); $ test-> log (); "Ich bin eine Methode des Mabelsones!"
Kopieren Das war ziemlich einfach, aber was passiert, wenn eine Klasse bereits eine Methode mit demselben Namen hat wie eine in dem von ihr verwendeten Merkmal ? Überprüfen wir es. In der Testklasse fügen wir eine "Protokoll" -Methode hinzu:
Klassentest verwenden Sie MasaTone; öffentliche Funktion log () echo "Ich bin eine Methode der Testklasse!";
Kopieren Wenn wir jetzt die „Protokoll“ -Methode aufrufen, erhalten wir ein anderes Ergebnis:
$ test = neuer Test (); $ test-> log (); "Ich bin eine Methode der Testklasse!"
Kopieren Was wäre, wenn die Testklasse keine „Protokoll“ -Methode hätte, sie sie jedoch von einer Basisklasse erbte, die sie erweiterte? Mal sehen:
Klassenbasis public function log () echo "Ich bin eine Methode der Basisklasse!"; Klasse-Test erweitert Basi!"
Kopieren Wie Sie sehen, haben wir „Ich bin eine Methode von Mabitone!”Als Ergebnis des Aufrufens der Protokollmethode. Dies bedeutet, dass die Base
Die Klassenmethode wurde von der im Merkmal überschrieben. Die Hierarchie ist hier einfach zu beachten. In einer Klasse:
- Merkmale überschreiben ererbte Methoden;
- Aktuelle Klassenmethoden überschreiben Merkmalsmethoden;
Verwenden mehrerer Merkmale
In einer Klasse können wir mehrere Eigenschaften verwenden: Alles, was wir tun müssen, ist, sie nach dem aufzunehmen verwenden
Schlüsselwort, getrennt durch ein Komma:
Klassentest verwenden Sie Dreitone, Merkmal;
Kopieren Die Verwendung mehrerer Merkmale kann jedoch möglicherweise Namenskonflikte erzeugen. A fataler Fehler wird zurückgegeben, wenn die Merkmale Methoden mit demselben Namen haben:
Merkmal Mabroitone public function log () echo "Ich bin eine Methode von Treitone!"; Merkmal Merkmalwo public function log () echo" Ich bin eine Methode des Merkmals!"; Klasse -Test Verwenden Sie Dreitone, Merkmalwo; Php Fatal Fehler: Merkmalsmethode -Protokoll wurde nicht angewendet, da Kollisionen mit anderen Merkmalsmethoden 1 vorhanden sind
Kopieren Was können wir tun, um solche Konflikte zu lösen?? Wir können die verwenden anstatt
Operator mit Ausnahme der Methode, die wir nicht verwenden möchten:
Klasse test verwenden Sie Dreitone, Merkmalwo Mabaitone :: log stattdessen Merkmal;
Kopieren Die Syntax ist sehr einfach: Wir haben angegeben, dass wir die „log“ -Methode aus dem Merkmal des Mabels verwenden möchten, wodurch der Konflikt gelöst wird. Was ist, wenn wir wie oben tun möchten, aber wir möchten die Funktionalität, die durch die "Protokoll" -Methode bereitgestellt wird? Wir müssen eine erstellen alias
dafür. Wir können es mit der Verwendung des als
Operator. Im folgenden Beispiel verweigern wir die Methode "Protokoll" als "Merkmalwo_log":
Klasse test verwenden Sie Dreitone, Merkmalwo Mabaitone :: log stattdessen Merkmal; Merkmalwo :: log als Merkmalwo_Log;
Kopieren Auf diese Weise können wir weiterhin auf die „Protokoll“ -Methode des Merkmals zugreifen und sie als Merkmalwo_Log () anrufen:
$ test = neuer Test (); $ test-> log (); Ich bin eine Methode des Mabelsones! $ test-> Merkmalwo_log (); Ich bin eine Methode des Merkmals!
Kopieren Verwenden des AS -Operators, um die Sichtbarkeit einer Merkmalsmethode zu ändern
In einer Klasse die als
Der Bediener kann auch verwendet werden, um die Sichtbarkeit einer Methode zu ändern, die als Teil eines Merkmals importiert wurde. Im vorherigen Beispiel sind alle Methoden der Merkmale öffentlich
. Wir können dies in der Klasse ändern:
Klassentest verwenden Dreitone log als geschützt;
Kopieren Mit der obigen Syntax haben wir angegeben, dass die Protokollmethode von „Treitone“ verwendet werden sollte als geschützt
Auch wenn es ursprünglich mit einem deklariert wurde öffentlich
Sichtweite. Wenn wir versuchen, die Protokollmethode aufzurufen, erhalten wir einen Fehler:
$ test = neuer Test (); $ test-> log (); PHP -WARNUNG: Unbekundeter Fehler: Aufrufen nach geschützter Methode test :: log () aus dem Kontext "in PHP -Shell -Code: 1
Kopieren Wenn wir einen Namen für den Alias angeben, wird die Sichtbarkeitsänderung auf die aliased -Methode angewendet, während der ursprüngliche seine Sichtbarkeit beibehält:
Klasse test verwenden Sie Dreitone log as Protected aliased_log; $ test = new Test (); $ test-> log (); Ich bin eine Methode des Mabelsones! $ test-> aliased_log (); PHP -WARNUNG: Unbekundeter Fehler: Rufen Sie nach Protected Method Test :: Aliased_log () aus dem Kontext "in PHP -Shell -Code: 1
Kopieren Abstrakte und statische Methoden in einem Merkmal
In einem Merkmal können wir beide definieren abstrakt
Und statisch
Methoden. Im ersten Fall erfordert das Merkmal die Klasse, die sie verwendet, um eine konkrete Implementierung der Methode bereitzustellen. Ein fataler Fehler wird generiert, wenn die Klasse die Methode nicht implementiert oder nicht als abstrakt deklariert wird:
Kopieren Eine Merkmalsmethode kann auch deklariert und verwendet werden als als statisch
:
Kopieren Merkmalseigenschaften
Nicht nur Methoden, sondern auch Eigenschaften können in Merkmalen definiert werden, sondern die einzige Regel, die respektiert Gleiche Sichtbarkeit und Anfangswert. Hier ist ein Beispiel:
Kopieren Der $ Name
Die Eigenschaft ist in "Dreitone" und auch in der "Test" -Klasse definiert. Beide haben die gleiche Sichtbarkeit (geschützt), aber ihr Anfangswert ist unterschiedlich, daher werden sie als inkompatibel angesehen, und dies führt zu einem tödlichen Fehler.
Gedanken schließen
In diesem Artikel haben wir gelernt zu wissen Züge
, Eine Funktion, die die Wiederverwendung der Code in PHP verbessert. Wir haben gesehen, wie Merkmale nicht instanziiert werden können, sondern nur in Klassen verwendet werden, über die verwenden
Stichwort. Wir haben gesehen, was die Vorrangreihenfolge ist, die bei einem Merkmal und der Klasse verwendet wird, die es in den Implementierungsmethoden mit demselben Namen verwendet wird anstatt
Operator und wie man Aliase für die Merkmalsmethoden erstellt und wie es möglich ist, ihre Sichtbarkeit mit dem zu ändern als
Operator.
Schließlich haben wir gesehen, wie es auch möglich ist, Eigenschaften und statische oder abstrakte Methoden in einem Merkmal zu definieren. Ich möchte mehr über PHP erfahren? Wir haben viele Artikel zu diesem Thema!
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- So erstellen Sie eine Tkinter -Anwendung mithilfe eines objektorientierten…
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- Wie man mit der Woocommerce -REST -API mit Python arbeitet
- Wie man die Festplattenleistung unter Linux bewertet
- So erstellen Sie einen Docker -basierten Lampenstapel mit Docker auf…
- Mint 20: Besser als Ubuntu und Microsoft Windows?
- Dinge zu installieren auf Ubuntu 22.04
- Wie man Nautilus-Erweiterungen mit Nautilus-Python schreibt
- Wie man ein Signal an Kinderprozesse aus einer Bash verbreitet…
- « So erstellen, verpacken und unterschreiben Sie eine Firefox -Weberweiterung
- So aktivieren Sie Autologin auf Kali Linux »