PHP kézikönyv
Előző | 19. Fejezet. Osztályok és objektumok (PHP 5) | Következő

# A static kulcsszó

A statikus (static) osztály adattagok vagy metódusok elérhetőek bármilyen osztálypéldány segítsége nélkül. Egy statikusként deklarált adattag nem érhető el egy példányosított objektumból (bár egy statikus metódust el lehet érni).

A statikus deklarációnak a láthatóság deklarációja után kell lenni. A PHP 4-gyel való kompatibilitás miatt, ha nincs láthatóság deklaráció, az adattag vagy metódus publikus láthatósággal fog rendelkezni.

Mivel a statikus metódusok meghívhatóak osztálypéldány nélkül, a $this ál-változó nem érhető el a statikus metóduson belül.

Valójában a statikus metódushívások a fordítás idejében meghatározódnak. Amikor egyértelmű osztálynevet használsz egy, már teljesen azonosított metódus használatánál, nincs semmilyen öröklődési szabály. Ha a hívást self-fel végzed, a self-et a jelenlegi osztályként fordítja le a motor, ez az az oszály, amelyikhez a kód tartozik. Itt sincs semmilyen öröklődési szabály.

Statikus tulajdonságok nem érhetőek el az objektumon keresztül a -> operátort használva.

Nem statikus metódusok statutikus meghívása esetén a motor E_STRICT szintű hibát generál.

Példa 19-15. Statikus adattag példa

`<?php
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 . "\n";
$foo = new Foo();
print $foo->staticValue() . "\n";
print $foo->my_static . "\n"; // Meghatározatlan addattag: my_static
// $foo::my_static nem lehetséges.
print Bar::$my_static . "\n";
$bar = new Bar();
print $bar->fooStatic() . "\n";
?>`

Példa 19-16. Statikus metódus példa

`<?php class Foo { public static function aStaticMethod() { // ... } } Foo::aStaticMethod(); ?>`

Előző | Tartalom | Következő
Scope Resolution Operator (::) | Fel | Osztály konstansok