PHP, OOP Klassenvariablen sind statische Variablen

Klassenvariablen sind nicht über die Instanz sondern über die Klasse zugänglich

Klassenvariablen in PHP werden klassenweit über das Schlüsselwort static deklariert. Klassenvariablen in PHP sind nicht über die Instanz sondern über den Namen der Klasse als ClassName::$variable zugänglich. Innerhalb der Klasse sind Klasenvariablen über das Schlüsselwort self::$variable erreichbar.

class Foo{
    # Deklariere eine Klassenvariable
    static $version = "2.0";
    function __construct(){
        # Zugriff auf die Klassenvariable
        # über das Schlüsselwort self
        $this->version = self::$version;
    }
}
# Zugriff auf die Klassenvariable
# über den Namen der Klasse
Foo::$version = "3.0";
$f = new Foo;
print_r($f);

Anmerkungen

Klassenvariablen verhalten sich grundsätzlich statisch, d.h., eine Klassenvariable behält unabhängig von Instanzen ihren Inhalt klassenweit bis zur nächsten Veränderung und solange die Klasse im Hauptspeicher lebt. Eine Klassenmethode ist eine statische Methode und kann nur auf statische Variablen zugreifen, nicht jedoch auf Eigenschaften von Instanzen.

Es ist PHP-spezifisch, Klassenvariablen und auch Klassenfunktionen mit dem Schlüsselwort static als Solche kenntlich zu machen.

Praktische Anwendung

Wie in manchen Perlklassen üblich, kann man auch in PHP eine Klassenvariable setzten welche das Verhalten einer Anwendung, z.B. im Fehlerfall bestimmt:

require "Scaliger.php";
Scaliger::$EXCEPTION = 1;
$sca = new Scaliger(29,2,2019);

Damit wird im Fehlerfall eine Exception geworfen, z.B. wenn ein ungültiges Datum in den Konstruktor gegeben wurde.


Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. s​os­@rolf­rost.de.