Forum und email

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