PHP, Klassen und Objekte
Klassen und Objekte in PHP
PHP unterstützt wie Java die objektorientierte Programmierung und verwendet Klassen und Objekte als Kernbausteine. Das Verständnis dieser Konzepte ist für die Beherrschung von PHP unerlässlich. In diesem Leitfaden erfahren Sie alles, was Sie über Klassen und Objekte in PHP wissen müssen.
Eine Klasse definieren
Eine Klasse in PHP ist eine Blaupause zum Erstellen von Objekten. Es definiert die Struktur und das Verhalten der Objekte der Klasse.
Syntax
class ClassName { // Properties (Fields) // Methods }
Beispiel
class Car { // Properties public $color; public $model; public $year; // Methods public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Objekte erstellen
Objekte sind Instanzen von Klassen. Sie erstellen ein Objekt aus einer Klasse mit dem neuen Schlüsselwort.
Syntax
$objectName = new ClassName();
Beispiel
class Main { public function run() { $myCar = new Car(); // Creating an object of the Car class $myCar->color = "Red"; $myCar->model = "Tesla"; $myCar->year = 2022; $myCar->displayInfo(); } } $main = new Main(); $main->run();
Eigenschaften und Methoden
Eigenschaften (auch als Felder bezeichnet) stellen den Zustand eines Objekts dar, während Methoden das Verhalten des Objekts definieren.
Eigenschaften
Eigenschaften sind Variablen, die die Daten eines Objekts enthalten.
Beispiel
class Car { public $color; public $model; public $year; }
Methoden
Methoden sind innerhalb einer Klasse definierte Funktionen, die das Verhalten der Objekte beschreiben.
Beispiel
class Car { public $color; public $model; public $year; public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Konstrukteure
Konstruktoren sind spezielle Methoden, die automatisch aufgerufen werden, wenn ein Objekt instanziiert wird. Sie initialisieren das neu erstellte Objekt.
Standardkonstruktor
Wenn kein Konstruktor definiert ist, stellt PHP einen Standardkonstruktor ohne Argumente bereit.
Beispiel
class Car { public $color; public $model; public $year; // Default constructor public function __construct() { } public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Parametrisierter Konstruktor
Mit einem parametrisierten Konstruktor können Sie ein Objekt mit bestimmten Werten initialisieren.
Beispiel
class Car { public $color; public $model; public $year; // Parameterized constructor public function __construct($color, $model, $year) { $this->color = $color; $this->model = $model; $this->year = $year; } public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Verwendung des parametrisierten Konstruktors
class Main { public function run() { $myCar = new Car("Red", "Tesla", 2022); $myCar->displayInfo(); } } $main = new Main(); $main->run();
Konstruktorüberladung
PHP unterstützt das Überladen von Methoden nicht nativ wie Java, aber Sie können es mithilfe optionaler Parameter oder durch manuelles Verarbeiten von Argumenten innerhalb eines einzelnen Konstruktors simulieren.
Beispiel
class Car { public $color; public $model; public $year; // Simulating constructor overloading public function __construct($color = "Unknown", $model = "Unknown", $year = 0) { $this->color = $color; $this->model = $model; $this->year = $year; } public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Verwendung des simulierten überladenen Konstruktors
class Main { public function run() { $defaultCar = new Car(); $defaultCar->displayInfo(); $myCar = new Car("Red", "Tesla", 2022); $myCar->displayInfo(); } } $main = new Main(); $main->run();
Kapselung, Zugriffsmodifikatoren und statische Member in PHP
Verkapselung
Kapselung in PHP ist die Praxis, Daten (Eigenschaften) und Methoden (Funktionen) innerhalb einer Klasse zu bündeln. Es stellt sicher, dass der interne Zustand eines Objekts vor Eingriffen und Missbrauch von außen geschützt ist.
Zugriffsmodifikatoren
Zugriffsmodifikatoren in PHP steuern die Sichtbarkeit und Zugänglichkeit von Eigenschaften, Methoden und Konstruktoren. PHP unterstützt drei Hauptzugriffsmodifikatoren:
- Öffentlich:Von überall aus zugänglich.
- geschützt:Zugriff innerhalb der Klasse, Unterklassen und demselben Paket.
- privat: Nur innerhalb der definierenden Klasse zugänglich.
Beispielverwendung:
class ClassName { // Properties (Fields) // Methods }
Statische Mitglieder
Statische Mitglieder in PHP sind mit der Klasse selbst und nicht mit einer bestimmten Instanz verknüpft. Auf sie kann zugegriffen werden, ohne ein Objekt der Klasse zu erstellen.
Statische Eigenschaften:
Statische Eigenschaften werden von allen Instanzen einer Klasse gemeinsam genutzt. Sie werden mit dem Schlüsselwort static deklariert.
class Car { // Properties public $color; public $model; public $year; // Methods public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Statische Methoden:
Statische Methoden werden mit dem Schlüsselwort static deklariert. Sie gehören zur Klasse und nicht zu einer Instanz.
$objectName = new ClassName();
Zugriff auf statische Mitglieder:
Auf statische Mitglieder wird über den Klassennamen zugegriffen, nicht über ein Objekt.
class Main { public function run() { $myCar = new Car(); // Creating an object of the Car class $myCar->color = "Red"; $myCar->model = "Tesla"; $myCar->year = 2022; $myCar->displayInfo(); } } $main = new Main(); $main->run();
Zugriffsmodifikatoren in PHP
Zugriffsmodifikatoren in PHP steuern die Sichtbarkeit von Klassenmitgliedern, stellen die Kapselung sicher und erzwingen Zugriffsbeschränkungen.
Arten von Zugriffsmodifikatoren
- öffentlich
- geschützt
- privat
1. öffentlich
- Zugriff von:Überall.
- Verwendung: Öffentlich für Mitglieder verwenden, die allgemein zugänglich sein müssen.
class Car { public $color; public $model; public $year; }
2. geschützt
- Zugriff über: Innerhalb der Klasse und ihrer Unterklassen.
- Verwendung: Verwenden Sie protected für Mitglieder, auf die nur innerhalb der Klassenhierarchie zugegriffen werden sollte.
class Car { public $color; public $model; public $year; public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
3. privat
- Zugriff von:Nur innerhalb der Klasse.
- Verwendung: Verwenden Sie „private“ für Mitglieder, auf die außerhalb der definierenden Klasse nicht zugegriffen werden soll.
class Car { public $color; public $model; public $year; // Default constructor public function __construct() { } public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Nichtzugriffsmodifikatoren in PHP
Nichtzugriffsmodifikatoren in PHP ändern das Verhalten von Klassenmitgliedern, ohne ihre Sichtbarkeit zu beeinträchtigen.
Arten von Nichtzugriffsmodifikatoren
- statisch
- endgültig
- Zusammenfassung
1. statisch
- Verwendung:Deklariert Eigenschaften und Methoden, die zur Klasse und nicht zu einer Instanz gehören.
- Beispiel:
class ClassName { // Properties (Fields) // Methods }
2. endgültig
- Verwendung: Verhindert die weitere Änderung von Methoden oder die Vererbung von Klassen.
- Variablen: PHP unterstützt keine endgültigen Variablen.
- Methoden: Endgültige Methoden können nicht überschrieben werden.
- Kurse: Abschlusskurse können nicht verlängert werden.
- Beispiel:
class Car { // Properties public $color; public $model; public $year; // Methods public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
3. abstrakt
- Verwendung:Deklariert Klassen und Methoden, die unvollständig sind und in Unterklassen implementiert werden müssen.
- Abstrakte Klassen:Kann nicht instanziiert werden.
- Abstrakte Methoden: Ohne Körper deklariert und muss von Unterklassen implementiert werden.
- Beispiel:
$objectName = new ClassName();
Vererbung in PHP und Zugriffsmodifikatoren
Nachlass
Vererbung in PHP ist ein Mechanismus, bei dem eine Klasse (Unterklasse) die Eigenschaften und Methoden einer anderen Klasse (Superklasse) erben kann. Es erleichtert die Wiederverwendung von Code und ermöglicht die Erstellung einer hierarchischen Beziehung zwischen Klassen.
Syntax für die Vererbung
class Main { public function run() { $myCar = new Car(); // Creating an object of the Car class $myCar->color = "Red"; $myCar->model = "Tesla"; $myCar->year = 2022; $myCar->displayInfo(); } } $main = new Main(); $main->run();
Beispiel
class Car { public $color; public $model; public $year; }
In diesem Beispiel:
- Animal ist die Superklasse mit einer Eigenschaft $name und einer Methode eat().
- Dog ist die Unterklasse, die $name und eat() von Animal erbt und ihre eigene Methode bark() hinzufügt.
Zugriffsmodifikatoren in der Vererbung
Zugriffsmodifikatoren in PHP bestimmen die Sichtbarkeit von Klassenmitgliedern in Unterklassen und anderen Teilen des Programms. Sie spielen eine Schlüsselrolle bei der Vererbung.
Zugriffsmodifikatoren für normale Attribute und Methoden
- Öffentlich:Von überall aus zugänglich.
- geschützt:Zugriff innerhalb der Klasse, Unterklassen und innerhalb desselben Pakets.
- privat: Nur innerhalb der Klasse zugänglich, in der es deklariert ist.
class Car { public $color; public $model; public $year; public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Zugriffsmodifikatoren für statische Attribute und Methoden
Statische Mitglieder in PHP sind mit der Klasse und nicht mit einer bestimmten Instanz verknüpft. Sie folgen den gleichen Zugriffsregeln wie nicht-statische Mitglieder bei der Vererbung.
class Car { public $color; public $model; public $year; // Default constructor public function __construct() { } public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Werden statische Methoden vererbt?
Statische Methoden werden in PHP vererbt, können aber nicht im gleichen Sinne wie Instanzmethoden überschrieben werden. Wenn eine Unterklasse eine statische Methode mit demselben Namen definiert, verbirgt sie die statische Methode der übergeordneten Klasse.
class ClassName { // Properties (Fields) // Methods }
Zugriffsmodifikatoren für abstrakte Methoden
Abstrakte Methoden in PHP müssen in abstrakten Klassen definiert werden. Die Sichtbarkeit einer abstrakten Methode in der Oberklasse bestimmt ihre Sichtbarkeit in Unterklassen. Unterklassen müssen abstrakte Methoden mit denselben oder weniger restriktiven Zugriffsmodifikatoren implementieren.
class Car { // Properties public $color; public $model; public $year; // Methods public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Zugriffsmodifikatoren für endgültige Attribute und Methoden
Finale Methoden in PHP können nicht durch Unterklassen überschrieben werden und finale Klassen können nicht erweitert werden.
- Endgültige Methoden:Verhindern Sie das Überschreiben von Methoden.
- Abschlussklassen: Vererbung verhindern.
$objectName = new ClassName();
Syntax zum Deklarieren von Top-Level-Klassen in PHP
In PHP folgt die Deklaration von Klassen der obersten Ebene (Klassen, die nicht in anderen Klassen verschachtelt sind) einer bestimmten Reihenfolge von Schlüsselwörtern. Die Deklaration kann Zugriffsmodifikatoren, abstrakte oder endgültige Schlüsselwörter und das Klassenschlüsselwort enthalten.
Schlüsselwörter, die verwendet werden können:
- Zugriffsmodifikator:öffentlich
- Klassentyp: abstrakt oder endgültig
Befehl:
class ClassName { // Properties (Fields) // Methods }
Syntax:
class Car { // Properties public $color; public $model; public $year; // Methods public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Wichtige Hinweise:
- PHP geht davon aus, dass „public“ der Standardzugriffsmodifikator ist, wenn keiner angegeben ist.
- Eine Klasse kann nicht gleichzeitig abstrakt und endgültig sein.
- geschützte und private Zugriffsmodifikatoren sind für Klassen der obersten Ebene nicht zulässig.
Beispiel:
$objectName = new ClassName();
Syntax zum Deklarieren von Attributen in Klassen in PHP
Schlüsselwörter, die verwendet werden können:
- Zugriffsmodifikatoren: öffentlich, geschützt, privat
- Statischer Modifikator: statisch
- Unveränderlicher Modifikator: schreibgeschützt (eingeführt in PHP 8.1)
Befehl:
class Main { public function run() { $myCar = new Car(); // Creating an object of the Car class $myCar->color = "Red"; $myCar->model = "Tesla"; $myCar->year = 2022; $myCar->displayInfo(); } } $main = new Main(); $main->run();
Syntax:
class Car { public $color; public $model; public $year; }
Wichtige Hinweise:
- Attribute sind standardmäßig öffentlich, wenn kein Zugriffsmodifikator angegeben ist.
- Statische Attribute gehören zur Klasse und nicht zu Instanzen.
- Readonly-Attribute können nur einmal initialisiert werden, entweder während der Deklaration oder im Konstruktor (PHP 8.1).
Beispiel:
class Car { public $color; public $model; public $year; public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Syntax zum Deklarieren von Methoden in Klassen in PHP
Schlüsselwörter, die verwendet werden können:
- Zugriffsmodifikatoren: öffentlich, geschützt, privat
- Statischer Modifikator: statisch
- Endgültiger Modifikator: final
- Abstrakter Modifikator: abstrakt
Befehl:
class Car { public $color; public $model; public $year; // Default constructor public function __construct() { } public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Syntax:
class Car { public $color; public $model; public $year; // Parameterized constructor public function __construct($color, $model, $year) { $this->color = $color; $this->model = $model; $this->year = $year; } public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Wichtige Hinweise:
- Wenn kein Zugriffsmodifikator angegeben ist, ist die Methode standardmäßig öffentlich.
- Statische Methoden gehören zur Klasse, nicht zu Instanzen.
- Endgültige Methoden können in Unterklassen nicht überschrieben werden.
- Abstrakte Methoden müssen in einer abstrakten Klasse deklariert werden und dürfen keinen Körper haben.
Beispiel:
class Main { public function run() { $myCar = new Car("Red", "Tesla", 2022); $myCar->displayInfo(); } } $main = new Main(); $main->run();
Abstrakte Klassen in PHP
Abstrakte Klassen in PHP ähneln ihren Gegenstücken in Java und werden zum Definieren eines Entwurfs für andere Klassen verwendet. Sie enthalten sowohl abstrakte Methoden (Methoden ohne Implementierung) als auch konkrete Methoden (Methoden mit Implementierung). Abstrakte Klassen werden mit dem Schlüsselwort abstract deklariert und können nicht direkt instanziiert werden.
1. Einführung in abstrakte Klassen
Eine abstrakte Klasse dient als Basisklasse für abgeleitete Klassen. Es definiert allgemeine Verhaltensweisen für seine Unterklassen und ermöglicht gleichzeitig die Implementierung spezifischer Methoden in diesen Unterklassen.
2. Deklarieren einer abstrakten Klasse
Um eine abstrakte Klasse in PHP zu deklarieren, verwenden Sie das Schlüsselwort abstract vor dem Schlüsselwort class.
Beispiel:
class ClassName { // Properties (Fields) // Methods }
3. Abstrakte Methoden
Abstrakte Methoden werden in der abstrakten Klasse definiert, haben aber keinen Körper. Unterklassen müssen alle abstrakten Methoden implementieren.
Beispiel:
class Car { // Properties public $color; public $model; public $year; // Methods public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
4. Konkrete Methoden
Konkrete Methoden in einer abstrakten Klasse haben einen Körper und können unverändert von den Unterklassen geerbt oder überschrieben werden.
Beispiel:
$objectName = new ClassName();
5. Unterklassen erstellen
Unterklassen einer abstrakten Klasse müssen alle ihre abstrakten Methoden implementieren, es sei denn, die Unterklasse ist auch als abstrakt deklariert.
Beispiel:
class Main { public function run() { $myCar = new Car(); // Creating an object of the Car class $myCar->color = "Red"; $myCar->model = "Tesla"; $myCar->year = 2022; $myCar->displayInfo(); } } $main = new Main(); $main->run();
6. Instanziieren abstrakter Klassen
Abstrakte Klassen können nicht direkt instanziiert werden. Sie müssen eine konkrete Unterklasse verwenden, um eine Instanz zu erstellen.
Beispiel:
class Car { public $color; public $model; public $year; }
7. Konstruktoren in abstrakten Klassen
Abstrakte Klassen können Konstruktoren haben und ihre Konstruktoren werden aufgerufen, wenn eine Unterklasse instanziiert wird.
Beispiel:
class Car { public $color; public $model; public $year; public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
8. Abstrakte Klassen mit Feldern und Methoden
Abstrakte Klassen können Instanzvariablen und konkrete Methoden enthalten und so wiederverwendbare Funktionen für Unterklassen bereitstellen.
Beispiel:
class Car { public $color; public $model; public $year; // Default constructor public function __construct() { } public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
9. Statische Methoden in abstrakten Klassen
Abstrakte Klassen können statische Methoden enthalten. Statische Methoden gehören zur Klasse und können aufgerufen werden, ohne sie zu instanziieren.
Beispiel:
class ClassName { // Properties (Fields) // Methods }
Syntax zum Deklarieren abstrakter Klassen in PHP
Schlüsselwörter, die verwendet werden können:
- abstrakt
- öffentlich, geschützt, privat (Zugriffsmodifikatoren)
Befehl:
class Car { // Properties public $color; public $model; public $year; // Methods public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Beispiele:
Abstrakter Kurs mit abstrakten und konkreten Methoden
$objectName = new ClassName();
Abstrakte Klasse mit Feldern und endgültigen Methoden
class Main { public function run() { $myCar = new Car(); // Creating an object of the Car class $myCar->color = "Red"; $myCar->model = "Tesla"; $myCar->year = 2022; $myCar->displayInfo(); } } $main = new Main(); $main->run();
Wichtige Hinweise:
- Abstrakte Klassen können nicht direkt instanziiert werden.
- Abstrakte Methoden müssen durch nicht abstrakte Unterklassen implementiert werden.
- Unterklassen, die nicht alle abstrakten Methoden implementieren, müssen ebenfalls als abstrakt deklariert werden.
- Konkrete Methoden in abstrakten Klassen können von Unterklassen optional überschrieben werden.
- Abstrakte Klassen können Konstruktoren, Eigenschaften und Konstanten haben.
- Abstrakte Klassen können beliebige Sichtbarkeitsmodifikatoren für ihre Methoden und Eigenschaften verwenden.
Schnittstellen in PHP
Eine Schnittstelle in PHP definiert einen Vertrag für Klassen, die sie implementieren. Es gibt die Methoden an, die eine Klasse implementieren muss, stellt jedoch selbst keine Methodenimplementierungen bereit. Schnittstellen ermöglichen einen flexibleren und modulareren Code, sodass Klassen unabhängig von ihrer Vererbungshierarchie einem gemeinsamen Satz von Methodensignaturen folgen können.
1. Einführung in Schnittstellen
Eine Schnittstelle in PHP ähnelt einer abstrakten Klasse, kann jedoch nur Methodensignaturen ohne Implementierung definieren. Eine Klasse, die eine Schnittstelle implementiert, muss die Implementierungen für alle in der Schnittstelle deklarierten Methoden bereitstellen. Eine Klasse kann mehrere Schnittstellen implementieren, wodurch Schnittstellen ein wichtiger Bestandteil der PHP-Unterstützung für die Mehrfachvererbung von Verhalten sind.
2. Deklarieren einer Schnittstelle
Um eine Schnittstelle zu deklarieren, verwenden Sie das Schlüsselwort interface. Schnittstellen können nur Methodendeklarationen (keine Methodenkörper), Konstanten und abstrakte Methoden enthalten.
Beispiel:
class Car { public $color; public $model; public $year; }
3. Implementierung einer Schnittstelle
Eine Klasse, die eine Schnittstelle implementiert, muss Implementierungen für alle in der Schnittstelle deklarierten Methoden bereitstellen. Eine Klasse kann mehrere Schnittstellen implementieren und diese durch Kommas trennen.
Beispiel:
class Car { public $color; public $model; public $year; public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
4. Signaturen der Schnittstellenmethode
Methoden in Schnittstellen dürfen keinen Körper haben und müssen öffentlich sein. Wenn eine Klasse eine Schnittstelle implementiert, muss sie diese Methoden genau so implementieren, wie sie in der Schnittstelle deklariert sind, einschließlich der Methodensignatur.
Beispiel:
class Car { public $color; public $model; public $year; // Default constructor public function __construct() { } public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
5. Implementierung mehrerer Schnittstellen
Eine Klasse in PHP kann mehrere Schnittstellen implementieren. Dies ermöglicht mehr Flexibilität beim Entwerfen von Systemen, bei denen Klassen unterschiedliche Verträge einhalten können.
Beispiel:
class ClassName { // Properties (Fields) // Methods }
6. Schnittstellenkonstanten
Schnittstellen können Konstanten enthalten. Diese Konstanten sind automatisch öffentlich und können von jeder Klasse aufgerufen werden, die die Schnittstelle implementiert.
Beispiel:
class Car { // Properties public $color; public $model; public $year; // Methods public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
7. Schnittstellenvererbung
Eine Schnittstelle kann eine andere Schnittstelle erweitern. Dies bedeutet, dass die untergeordnete Schnittstelle alle Methoden (Signaturen) von der übergeordneten Schnittstelle erbt und auch neue Methoden hinzufügen kann. Eine Klasse, die die untergeordnete Schnittstelle implementiert, muss alle Methoden sowohl der übergeordneten als auch der untergeordneten Schnittstelle implementieren.
Beispiel:
$objectName = new ClassName();
8. Statische Methoden in Schnittstellen
Schnittstellen dürfen keine statischen Methoden enthalten. Alle in einer Schnittstelle deklarierten Methoden müssen Instanzmethoden sein. Statische Methoden sind in Schnittstellen nicht zulässig, da Schnittstellen Verträge auf Instanzebene für die implementierenden Klassen definieren.
Syntax zum Deklarieren und Implementieren von Schnittstellen in PHP
Schlüsselwörter, die verwendet werden können:
- Schnittstelle
- öffentlich
Befehl:
class Main { public function run() { $myCar = new Car(); // Creating an object of the Car class $myCar->color = "Red"; $myCar->model = "Tesla"; $myCar->year = 2022; $myCar->displayInfo(); } } $main = new Main(); $main->run();
Beispiele:
Schnittstelle mit Methodensignaturen
class Car { public $color; public $model; public $year; }
Schnittstelle mit mehreren Implementierungen
class Car { public $color; public $model; public $year; public function displayInfo() { echo "Model: " . $this->model . "\n"; echo "Color: " . $this->color . "\n"; echo "Year: " . $this->year . "\n"; } }
Wichtige Hinweise:
- Schnittstellenmethoden: Methoden in einer Schnittstelle müssen öffentlich sein und dürfen keinen Körper haben.
- Implementieren mehrerer Schnittstellen: Eine Klasse kann mehrere Schnittstellen implementieren und diese durch Kommas trennen.
- Zugriffsmodifikatoren: Alle Methoden in einer Schnittstelle sind implizit öffentlich. Zugriffsmodifikatoren wie „private“ oder „protected“ sind nicht zulässig.
- Schnittstellenkonstanten: Schnittstellen können Konstanten deklarieren, die automatisch öffentlich sind und auf die durch die Implementierung von Klassen zugegriffen werden kann.
- Schnittstellenvererbung: Eine Schnittstelle kann eine oder mehrere Schnittstellen erweitern und ihre Methodensignaturen kombinieren.
- Statische Methoden: Schnittstellen können keine statischen Methoden enthalten.
- Implementieren aller Methoden: Eine Klasse muss alle Methoden implementieren, die durch die von ihr implementierten Schnittstellen definiert werden.
Das obige ist der detaillierte Inhalt vonPHP, Klassen und Objekte. 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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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











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.

Die Aufzählungsfunktion in Php8.1 verbessert die Klarheit und Type des Codes, indem benannte Konstanten definiert werden. 1) Aufzählungen können Ganzzahlen, Zeichenfolgen oder Objekte sein, die die Lesbarkeit der Code und die Type der Type verbessern. 2) Die Aufzählung basiert auf der Klasse und unterstützt objektorientierte Merkmale wie Traversal und Reflexion. 3) Die Aufzählung kann zum Vergleich und zur Zuordnung verwendet werden, um die Sicherheit der Typ zu gewährleisten. 4) Aufzählung unterstützt das Hinzufügen von Methoden zur Implementierung einer komplexen Logik. 5) Strenge Typ Überprüfung und Fehlerbehandlung können häufig auftretende Fehler vermeiden. 6) Die Aufzählung verringert den magischen Wert und verbessert die Wartbarkeit, achten Sie jedoch auf die Leistungsoptimierung.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Die RESTAPI -Designprinzipien umfassen Ressourcendefinition, URI -Design, HTTP -Methodenverbrauch, Statuscode -Nutzung, Versionskontrolle und Hassoas. 1. Ressourcen sollten durch Substantive dargestellt und in einer Hierarchie aufrechterhalten werden. 2. HTTP -Methoden sollten ihrer Semantik entsprechen, z. B. Get wird verwendet, um Ressourcen zu erhalten. 3. Der Statuscode sollte korrekt verwendet werden, z. B. 404 bedeutet, dass die Ressource nicht vorhanden ist. 4. Die Versionskontrolle kann über URI oder Header implementiert werden. 5. Hateoas startet Client -Operationen durch Links als Antwort.

In PHP wird das Ausnahmebehandlung durch den Versuch, Fang, schließlich und werfen Keywords erreicht. 1) Der Try -Block umgibt den Code, der Ausnahmen auslösen kann. 2) Der Catch -Block behandelt Ausnahmen; 3) Block stellt schließlich sicher, dass der Code immer ausgeführt wird. 4) Wurf wird verwendet, um Ausnahmen manuell zu werfen. Diese Mechanismen verbessern die Robustheit und Wartbarkeit Ihres Codes.

Die Hauptfunktion anonymer Klassen in PHP besteht darin, einmalige Objekte zu erstellen. 1. Anonyme Klassen ermöglichen es, Klassen ohne Namen direkt im Code zu definieren, was für vorübergehende Anforderungen geeignet ist. 2. Sie können Klassen erben oder Schnittstellen implementieren, um die Flexibilität zu erhöhen. 3. Achten Sie bei der Verwendung auf Leistung und Code -Lesbarkeit und vermeiden Sie es, dieselben anonymen Klassen wiederholt zu definieren.
