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

PHP — Статические методы

Ключевое слово static позволяет создавать статические методы и свойства.

Особенность статического метода в том, что его можно вызвать напрямую, без необходимости создавать экземпляр его класса.


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

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

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

Ключевое слово static ставится в объявлении перед именем функции:

index.php
<?php
class ClassName {
  public static function staticMethod() {
    echo "Hello World!";
  }
}
?>

Обращение к статическому методу

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

В следующем примере объявляется статический метод с именем welcome() и вызывается именно в такой форме. Обратите внимание, что объект вообще не создаётся:

Пример

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

Prompt
Создайте класс PHP с именем greeting со статическим методом welcome(), который выводит «Hello World!». Вызовите этот статический метод напрямую по имени класса, не создавая экземпляр.
Вывод: PHP-скрипт

Пример

Здесь статический метод sum() объявляется, а затем вызывается в той же форме: имя класса, ::, имя метода:

Prompt
Создайте класс PHP с именем calc со статическим методом sum(), который принимает два параметра и возвращает их произведение. Вызовите его с аргументами 6 и 4, затем выведите результат.
Вывод: PHP-скрипт

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

Общая форма вызова статического метода:

index.php
<?php
ClassName::staticMethod();
?>

PHP — Подробнее о статических методах

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

Пример

Здесь конструктор вызывает статический метод своего класса через self:

Prompt
Создайте класс PHP с именем greeting со статическим методом welcome(), который выводит «Hello World!», и конструктором, который вызывает этот статический метод с помощью ключевого слова self.
Вывод: PHP-скрипт

Пример

Метод другого класса тоже может вызвать статический метод, если этот статический метод имеет модификатор public:

Prompt
Создайте два класса PHP: класс A с публичным статическим методом welcome(), который выводит «Hello World!», и класс B с методом message(), который вызывает статический метод класса A. Создайте экземпляр класса B и вызовите message().
Вывод: PHP-скрипт

Пример

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

Prompt
Создайте класс PHP domain с защищённым статическим методом getWebsiteName(), который возвращает "PromptCookbook". Затем создайте дочерний класс domainW3, который в своём конструкторе вызывает статический метод родительского класса и сохраняет результат. Выведите имя сайта.
Вывод: PHP-скрипт