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();
?>