Класове и обекти (PHP 5)
PHP Manual

Статични свойства и методи

Декларирането на свойствата и методите на клас като статични, ги прави достъпни без нуждата от инстанцииране на класа. До поле, декларирано като статично, не може да се осъществи достъп от инстанция на обект (може само чрез статичен метод).

От съображения за съвместимост с PHP 4, ако не е използвана декларация за видимост, свойството или методът ще бъдат разглеждани като public.

Поради факта, че статичните методи могат да бъдат извикани без да е нужна инстанция на обект, псевдо-променливата $this не е достъпна в метода деклариран като статичен.

Не е възможно да се осъществи достъп до статичните свойства на обект чрез оператора ->.

Също както всяка статична променлива в PHP, статичните свойства могат да бъдат инициализирани само посредсвтом низ или константа; изрази не са позволени. Така че, статично свойство може да бъде инициализирано примерно с цяло число или масив, но не може да бъде инициализирано с друга променлива, с върната стойност от функция или с обект.

При статичното извикване на нестатичен метод се генерира предупреждение от ниво E_STRICT.

От PHP 5.3.0 е възможно да се обърнете към клас посредством променлива. Стойността на променливата не може да бъде ключова дума (напр. self, parent и static не са позволени при динамичните референции към класове).

Example #1 Пример за статично свойство

<?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";      // Notice: Undefined property: Foo::$my_static

o::$my_static "\n";
$classname 'Foo';
print 
$classname::$my_static "\n"// От PHP 5.3.0

print Bar::$my_static "\n";
$bar = new Bar();
print 
$bar->fooStatic() . "\n";
?>

Example #2 Пример за статичен метод

<?php
class Foo {
    public static function 
aStaticMethod() {
        
// ...
    
}
}

Foo::aStaticMethod();
$classname 'Foo';
$classname::aStaticMethod(); // От PHP 5.3.0
?>

Класове и обекти (PHP 5)
PHP Manual