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

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

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

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

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

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

Пример 19-14. Пример за статично свойство

<?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

// $foo::my_static не е възможно

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

Пример 19-15. Пример за статичен метод

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

Foo::aStaticMethod();
?>