Auf dieser Seite wird die Verwendung des Schlüsselworts static zum Definieren statischer Methoden und Eigenschaften erläutert. static kann auch zum Definieren statischer Variablen und später statischer Bindung verwendet werden.
Das Deklarieren von Klassenattributen oder -methoden als statisch ermöglicht den direkten Zugriff ohne Instanziierung der Klasse. Auf statische Eigenschaften kann nicht über ein Objekt einer instanziierten Klasse zugegriffen werden (auf statische Methoden ist dies jedoch möglich).
Um mit PHP 4 kompatibel zu sein, sind Eigenschaften und Methoden standardmäßig öffentlich, wenn keine Zugriffskontrolle angegeben ist.
Da statische Methoden keinen Aufruf eines Objekts erfordern, ist die Pseudovariable $this in statischen Methoden nicht verfügbar.
Auf statische Eigenschaften können Objekte nicht über den ->-Operator zugreifen.
Der statische Aufruf einer nicht statischen Methode führt zu einem Fehler der Ebene E_STRICT.
Wie alle anderen statischen PHP-Variablen können statische Eigenschaften nur als Literale oder Konstanten initialisiert werden, nicht als Ausdrücke. Eine statische Eigenschaft kann also mit einer Ganzzahl oder einem Array initialisiert werden, sie kann jedoch nicht mit einem anderen Variablen- oder Funktionsrückgabewert initialisiert werden und kann auch nicht auf ein Objekt verweisen.
Beispiel #1 Beispiel für ein statisches Attribut
class Foo { public static $my_static = 'foo'; public function staticValue(){ return self::$my_static; } } class Bar extends Foo { public function fooStatic(){ return parent::$my_static; } } print Foo::$my_static.'<br>'; $foo = new Foo(); print $foo->staticValue().'<br>'; print $foo->my_static.'<br>'; print $foo::$my_static.'<br>'; $classname = 'Foo'; print $classname::$my_static; print Bar::$my_static.'<br>'; $bar = new Bar(); print $bar->fooStatic().'<br>';