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.
Example#1 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";
?>
Example#2 Statikus metódus példa
<?php
class Foo {
public static function aStaticMethod() {
// ...
}
}
Foo::aStaticMethod();
?>