Heim Backend-Entwicklung PHP-Tutorial PHP, Klassen und Objekte

PHP, Klassen und Objekte

Dec 29, 2024 pm 02:42 PM

PHP, Classes and Objects

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

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

Objekte erstellen

Objekte sind Instanzen von Klassen. Sie erstellen ein Objekt aus einer Klasse mit dem neuen Schlüsselwort.

Syntax

$objectName = new ClassName();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

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

Verwendung des parametrisierten Konstruktors

class Main {
    public function run() {
        $myCar = new Car("Red", "Tesla", 2022);
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

Statische Methoden:

Statische Methoden werden mit dem Schlüsselwort static deklariert. Sie gehören zur Klasse und nicht zu einer Instanz.

$objectName = new ClassName();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

Zugriffsmodifikatoren in PHP

Zugriffsmodifikatoren in PHP steuern die Sichtbarkeit von Klassenmitgliedern, stellen die Kapselung sicher und erzwingen Zugriffsbeschränkungen.

Arten von Zugriffsmodifikatoren

  1. öffentlich
  2. geschützt
  3. 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;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

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

Nichtzugriffsmodifikatoren in PHP

Nichtzugriffsmodifikatoren in PHP ändern das Verhalten von Klassenmitgliedern, ohne ihre Sichtbarkeit zu beeinträchtigen.

Arten von Nichtzugriffsmodifikatoren

  1. statisch
  2. endgültig
  3. Zusammenfassung

1. statisch

  • Verwendung:Deklariert Eigenschaften und Methoden, die zur Klasse und nicht zu einer Instanz gehören.
  • Beispiel:
class ClassName {
    // Properties (Fields)
    // Methods
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

Beispiel

class Car {
    public $color;
    public $model;
    public $year;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

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

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:

  1. Zugriffsmodifikator:öffentlich
  2. Klassentyp: abstrakt oder endgültig

Befehl:

class ClassName {
    // Properties (Fields)
    // Methods
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

Wichtige Hinweise:

  1. PHP geht davon aus, dass „public“ der Standardzugriffsmodifikator ist, wenn keiner angegeben ist.
  2. Eine Klasse kann nicht gleichzeitig abstrakt und endgültig sein.
  3. geschützte und private Zugriffsmodifikatoren sind für Klassen der obersten Ebene nicht zulässig.

Beispiel:

$objectName = new ClassName();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Syntax zum Deklarieren von Attributen in Klassen in PHP

Schlüsselwörter, die verwendet werden können:

  1. Zugriffsmodifikatoren: öffentlich, geschützt, privat
  2. Statischer Modifikator: statisch
  3. 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();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Syntax:

class Car {
    public $color;
    public $model;
    public $year;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wichtige Hinweise:

  1. Attribute sind standardmäßig öffentlich, wenn kein Zugriffsmodifikator angegeben ist.
  2. Statische Attribute gehören zur Klasse und nicht zu Instanzen.
  3. 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";
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Syntax zum Deklarieren von Methoden in Klassen in PHP

Schlüsselwörter, die verwendet werden können:

  1. Zugriffsmodifikatoren: öffentlich, geschützt, privat
  2. Statischer Modifikator: statisch
  3. Endgültiger Modifikator: final
  4. 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";
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

Wichtige Hinweise:

  1. Wenn kein Zugriffsmodifikator angegeben ist, ist die Methode standardmäßig öffentlich.
  2. Statische Methoden gehören zur Klasse, nicht zu Instanzen.
  3. Endgültige Methoden können in Unterklassen nicht überschrieben werden.
  4. 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();
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

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

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

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

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

Syntax zum Deklarieren abstrakter Klassen in PHP

Schlüsselwörter, die verwendet werden können:

  1. abstrakt
  2. ö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";
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beispiele:

Abstrakter Kurs mit abstrakten und konkreten Methoden

$objectName = new ClassName();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

Wichtige Hinweise:

  1. Abstrakte Klassen können nicht direkt instanziiert werden.
  2. Abstrakte Methoden müssen durch nicht abstrakte Unterklassen implementiert werden.
  3. Unterklassen, die nicht alle abstrakten Methoden implementieren, müssen ebenfalls als abstrakt deklariert werden.
  4. Konkrete Methoden in abstrakten Klassen können von Unterklassen optional überschrieben werden.
  5. Abstrakte Klassen können Konstruktoren, Eigenschaften und Konstanten haben.
  6. 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;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

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

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:

  1. Schnittstelle
  2. ö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();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beispiele:

Schnittstelle mit Methodensignaturen

class Car {
    public $color;
    public $model;
    public $year;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

Wichtige Hinweise:

  1. Schnittstellenmethoden: Methoden in einer Schnittstelle müssen öffentlich sein und dürfen keinen Körper haben.
  2. Implementieren mehrerer Schnittstellen: Eine Klasse kann mehrere Schnittstellen implementieren und diese durch Kommas trennen.
  3. Zugriffsmodifikatoren: Alle Methoden in einer Schnittstelle sind implizit öffentlich. Zugriffsmodifikatoren wie „private“ oder „protected“ sind nicht zulässig.
  4. Schnittstellenkonstanten: Schnittstellen können Konstanten deklarieren, die automatisch öffentlich sind und auf die durch die Implementierung von Klassen zugegriffen werden kann.
  5. Schnittstellenvererbung: Eine Schnittstelle kann eine oder mehrere Schnittstellen erweitern und ihre Methodensignaturen kombinieren.
  6. Statische Methoden: Schnittstellen können keine statischen Methoden enthalten.
  7. 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!

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

Video Face Swap

Video Face Swap

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

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)

Heiße Themen

Java-Tutorial
1653
14
PHP-Tutorial
1251
29
C#-Tutorial
1224
24
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.

Was sind Aufzählungen (Enums) in PHP 8.1? Was sind Aufzählungen (Enums) in PHP 8.1? Apr 03, 2025 am 12:05 AM

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.

Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Apr 03, 2025 am 12:04 AM

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.

Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Apr 06, 2025 am 12:02 AM

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.

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

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.

Was sind REST -API -Designprinzipien? Was sind REST -API -Designprinzipien? Apr 04, 2025 am 12:01 AM

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.

Wie können Sie mit Ausnahmen in PHP effektiv umgehen (versuchen Sie, schließlich zu werfen)? Wie können Sie mit Ausnahmen in PHP effektiv umgehen (versuchen Sie, schließlich zu werfen)? Apr 05, 2025 am 12:03 AM

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.

Was sind anonyme Klassen in PHP und wann könnten Sie sie verwenden? Was sind anonyme Klassen in PHP und wann könnten Sie sie verwenden? Apr 04, 2025 am 12:02 AM

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.

See all articles