Перейти к основному содержимому

PHP - Статические свойства

Ключевое слово static также создаёт статические свойства.

Статическое свойство можно прочитать напрямую, вообще не создавая объект его класса.


Объявление статического свойства

Чтобы объявить статическое свойство, добавьте к нему ключевое слово static:

Синтаксис объявления статического свойства

static ставится перед именем свойства:

index.php
<?php
class ClassName {
  public static $statProp = "PromptCookbook";
}
?>

Доступ к статическому свойству

Чтение статического свойства состоит из трёх частей: имя класса, двойное двоеточие (::) и имя свойства.

В следующем примере объявляется статическое свойство с именем $value, которое выводится через echo напрямую в такой форме. Объект не нужен:

Пример

Прочитайте статическое свойство через имя его класса:

Prompt
Создайте PHP-класс с именем pi с публичным статическим свойством $value со значением 3.14159. Выведите статическое свойство напрямую, используя имя класса.
Вывод: PHP-скрипт

Синтаксис обращения к статическому свойству

Общая форма обращения к статическому свойству:

index.php
<?php
ClassName::$statProp;
?>

PHP - Подробнее о статических свойствах

Статические и нестатические свойства могут находиться в одном классе. Метод этого класса обращается к статическому свойству, указывая self и двойное двоеточие (::) перед именем свойства:

Пример

Метод читает статическое свойство своего класса через self:

Prompt
Создайте PHP-класс с именем pi с публичным статическим свойством $value со значением 3.14159 и методом staticValue(), который возвращает статическое свойство с помощью ключевого слова self. Создайте экземпляр и выведите результат.
Вывод: PHP-скрипт

Пример

Внутри дочернего класса обращайтесь к статическому свойству родителя с помощью ключевого слова parent. В примере оно также читается напрямую через имя дочернего класса:

Prompt
Создайте PHP-класс pi с публичным статическим свойством $value со значением 3.14159. Создайте дочерний класс x с методом xStatic(), который возвращает статическое свойство родительского класса. Выведите значение и напрямую, и через метод.
Вывод: PHP-скрипт