SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=248&group=44
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


Verweisoperator/Gültigkeitsbereichsoperator (::)


Der Gültigkeitsbereichsoperator, auch Verweisoperator genannt, ist ein Kürzel, das Zugriff auf statische, konstante und überschriebene Mitglieder einer Klasse ermöglicht.

Hinweis: Wenn solche Elemente außerhalb der Klassendefinition angesprochen werden sollen, muss der Name der Klasse verwendet werden.

Beispiel – :: außerhalb der Klassendefinition

<?php

class Flugzeug
{
    const MAX_FLUGHOEHE = 15000;
}

echo Flugzeug::MAX_FLUGHOEHE . " Fuss";

?>

Ausgabe
15000 Fuss


Schlüsselwörter self und parent

Die zwei speziellen Schlüsselwörter self und parent werden verwendet, um auf Mitglieder wie Eigenschaften und Methoden innerhalb einer Klassendefinition zuzugreifen. Die beiden Schlüsselwörter weisen folgende Besonderheiten auf:

Beispiel – :: innerhalb der Klassendefinition

<?php

class Flugzeug
{
    const MAX_FLUGHOEHE = 15000;
}

class A320 extends Flugzeug
{
    public static $hoehen_toleranz = 3000;

    public static function fliegen() {
        echo "Flughöhe (max): " . parent::MAX_FLUGHOEHE . " Fuss\n";
        echo "Flughöhen (Toleranz): " . self::$hoehen_toleranz . " Fuss\n";
    }
}

A320::fliegen();
?>

Ausgabe
Flughöhe (max): 15000 Fuss
Flughöhen (Toleranz): 3000 Fuss

Wenn eine abgeleitete Klasse die Definition der Methode eines Vaters überschreibt, wird PHP die Methode des Vaters nicht aufrufen. Es obliegt der abgeleiteten Klasse, ob die Methode der Vaterklasse aufgerufen wird oder nicht. Dies gilt ebenfalls für Konstruktoren und Destruktoren, Überladung und magische Methodendefinitionen.

Beispiel – Methode einer übergeordneten Klasse aufrufen

<?php
class Lebewesen
{
    protected function erzeugen() {
        echo "Lebewesen::erzeugen()\n";
    }
}

class Menschen extends Lebewesen
{
    // Definition der übergeordneten Klasse überschreiben
    public function erzeugen()
    {
        // Trotzdem die Funktion der übergeordneten Klasse aufrufen
        parent::erzeugen();
        echo "Menschen::erzeugen()\n";
    }
}

$mensch = new Menschen();
$mensch->erzeugen();
?>

Ausgabe
Lebewesen::erzeugen()
Menschen::erzeugen()