Welcome to php club

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

Краткое описание

В PHP5 появилось новое значение для ключевого слова static. Теперь оно может использоваться для определения статических методов и свойств, т.е. доступных вне контекста класса. Псевдопеременная $this не доступна внутри методов, объявленных как статические. В то же время статические методы могут быть вызваны через объект, а обычные — через класс. Это сделано для обратной совместимости, и не распространяется на свойства.
Пример:

<?php
class Foo {
    static
$static = 'статическое свойство';
    public
$normal = 'обычное свойство';

    public static function
aStaticMethod() {
        echo
"Foo::aStaticMethod() вызван.\n";
        
//echo $this->normal . "\n"; // Fatal error: Using $this when not in object context
        
echo Foo::$static . "\n";
    }
    
    public function
aRegularMethod() {
        echo
"Foo::aRegularMethod() вызван.\n";
        echo
$this->normal . "\n";
    }
}

Foo::aStaticMethod();
//Foo::aRegularMethod(); // Fatal error: Using $this when not in object context

$o = new Foo();
$o->aStaticMethod();
$o->aRegularMethod();
?>

Результат:

Проблемы с обратной совместимостью

Проблем с обратной совместимостью данное нововведение не имеет.

Дополнительные сведения

Описание в оригинальной документации: http://www.php.net/oop5.static


 
Комментариев нет. [Показать комментарии/форму]