PHP -Tutorial

PHP-HOME PHP-Einführung PHP-Installation PHP-Syntax PHP-Kommentare PHP-Variablen PHP-Echo / Drucken PHP-Datentypen PHP-Strings PHP-Nummern PHP-Mathematik PHP-Konstanten PHP-Operatoren PHP If...Else...Elseif PHP-Schalter PHP-Schleifen PHP-Funktionen PHP-Arrays PHP-Superglobals PHP-RegEx

PHP -Formulare

Handhabung von PHP-Formularen PHP-Formularvalidierung PHP-Formular erforderlich PHP-Formular-URL/E-Mail PHP-Formular vollständig

PHP- Erweitert

PHP-Datum und -Zeit PHP einschließen Umgang mit PHP-Dateien PHP-Datei öffnen/lesen PHP-Datei erstellen/schreiben Hochladen von PHP-Dateien PHP-Cookies PHP-Sitzungen PHP-Filter PHP-Filter für Fortgeschrittene PHP-Callback-Funktionen PHP-JSON PHP-Ausnahmen

PHP -OOP

PHP Was ist OOP PHP-Klassen/Objekte PHP-Konstruktor PHP-Destruktor PHP-Zugriffsmodifikatoren PHP-Vererbung PHP-Konstanten Abstrakte PHP-Klassen PHP-Schnittstellen PHP-Eigenschaften Statische PHP-Methoden Statische PHP-Eigenschaften PHP-Namespaces PHP-Iterables

MySQL- Datenbank

MySQL-Datenbank MySQL Connect MySQL-DB erstellen MySQL-Tabelle erstellen MySQL-Daten einfügen MySQL Letzte ID abrufen MySQL Mehrfach einfügen MySQL vorbereitet MySQL Select-Daten MySQL-Wo MySQL-Reihenfolge nach MySQL-Daten löschen MySQL-Update-Daten MySQL-Limit-Daten

PHP- XML

PHP-XML-Parser PHP-SimpleXML-Parser PHP SimpleXML - Get PHP-XML-Expat PHP-XML-DOM

PHP -AJAX

AJAX-Einführung AJAX-PHP AJAX-Datenbank AJAX-XML AJAX Live-Suche AJAX-Umfrage

PHP- Beispiele

PHP-Beispiele PHP-Compiler PHP-Quiz PHP-Übungen PHP-Zertifikat

PHP- Referenz

PHP-Übersicht PHP-Array PHP-Kalender PHP-Datum PHP-Verzeichnis PHP-Fehler PHP-Ausnahme PHP-Dateisystem PHP-Filter PHP-FTP PHP-JSON PHP-Schlüsselwörter PHP-Libxml PHP-Mail PHP-Mathematik PHP-Sonstiges PHP MySQLi PHP-Netzwerk PHP-Ausgabesteuerung PHP-RegEx PHP-SimpleXML PHP-Stream PHP-String Umgang mit PHP-Variablen PHP-XML-Parser PHP-Zip PHP-Zeitzonen

PHP OOP - Vererbung


PHP - Was ist Vererbung?

Vererbung in OOP = Wenn eine Klasse von einer anderen Klasse abgeleitet ist.

Die untergeordnete Klasse erbt alle öffentlichen und geschützten Eigenschaften und Methoden von der übergeordneten Klasse. Darüber hinaus kann es eigene Eigenschaften und Methoden haben.

Eine geerbte Klasse wird mit dem extends Schlüsselwort definiert.

Schauen wir uns ein Beispiel an:

Beispiel

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

// Strawberry is inherited from Fruit
class Strawberry extends Fruit {
  public function message() {
    echo "Am I a fruit or a berry? ";
  }
}
$strawberry = new Strawberry("Strawberry", "red");
$strawberry->message();
$strawberry->intro();
?>

Beispiel erklärt

Die Strawberry-Klasse wird von der Fruit-Klasse geerbt.

Das bedeutet, dass die Strawberry-Klasse aufgrund der Vererbung die öffentlichen $name- und $color-Eigenschaften sowie die öffentlichen __construct()- und intro()-Methoden der Fruit-Klasse verwenden kann.

Die Strawberry-Klasse hat auch ihre eigene Methode: message().



PHP - Vererbung und der Protected Access Modifier

Im vorherigen Kapitel haben wir gelernt, dass protectedauf Eigenschaften oder Methoden innerhalb der Klasse und von Klassen, die von dieser Klasse abgeleitet sind, zugegriffen werden kann. Was bedeutet das?

Schauen wir uns ein Beispiel an:

Beispiel

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

class Strawberry extends Fruit {
  public function message() {
    echo "Am I a fruit or a berry? ";
  }
}

// Try to call all three methods from outside class
$strawberry = new Strawberry("Strawberry", "red");  // OK. __construct() is public
$strawberry->message(); // OK. message() is public
$strawberry->intro(); // ERROR. intro() is protected
?>

Im obigen Beispiel sehen wir, dass wir einen Fehler erhalten, wenn wir versuchen, eine protected Methode (intro()) von außerhalb der Klasse aufzurufen. public Methoden werden gut funktionieren!

Schauen wir uns ein anderes Beispiel an:

Beispiel

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

class Strawberry extends Fruit {
  public function message() {
    echo "Am I a fruit or a berry? ";
    // Call protected method from within derived class - OK
    $this -> intro();
  }
}

$strawberry = new Strawberry("Strawberry", "red"); // OK. __construct() is public
$strawberry->message(); // OK. message() is public and it calls intro() (which is protected) from within the derived class
?>

Im obigen Beispiel sehen wir, dass alles gut funktioniert! Das liegt daran, dass wir die protected Methode (intro()) innerhalb der abgeleiteten Klasse aufrufen.


PHP - Überschreiben geerbter Methoden

Geerbte Methoden können überschrieben werden, indem die Methoden (mit demselben Namen) in der untergeordneten Klasse neu definiert werden.

Sehen Sie sich das Beispiel unten an. Die Methoden __construct() und intro() in der untergeordneten Klasse (Strawberry) überschreiben die Methoden __construct() und intro() in der übergeordneten Klasse (Fruit):

Beispiel

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

class Strawberry extends Fruit {
  public $weight;
  public function __construct($name, $color, $weight) {
    $this->name = $name;
    $this->color = $color;
    $this->weight = $weight;
  }
  public function intro() {
    echo "The fruit is {$this->name}, the color is {$this->color}, and the weight is {$this->weight} gram.";
  }
}

$strawberry = new Strawberry("Strawberry", "red", 50);
$strawberry->intro();
?>

PHP - Das letzte Schlüsselwort

Das final Schlüsselwort kann verwendet werden, um die Klassenvererbung oder das Überschreiben von Methoden zu verhindern.

Das folgende Beispiel zeigt, wie Sie die Klassenvererbung verhindern:

Beispiel

<?php
final class Fruit {
  // some code
}

// will result in error
class Strawberry extends Fruit {
  // some code
}
?>

Das folgende Beispiel zeigt, wie das Überschreiben von Methoden verhindert wird:

Beispiel

<?php
class Fruit {
  final public function intro() {
    // some code
  }
}

class Strawberry extends Fruit {
  // will result in error
  public function intro() {
    // some code
  }
}
?>