PHP — Статические методы
Ключевое слово static позволяет создавать статические методы и свойства.
Особенность статического метода в том, что его можно вызвать напрямую, без необходимости создавать экземпляр его класса.
Объявление статического метода
Чтобы добавить статический метод в класс, нужно всего одно дополнительное ключевое слово, static:
Синтаксис объявления статического метода
Ключевое слово static ставится в объявлении перед именем функции:
<?php
class ClassName {
public static function staticMethod() {
echo "Hello World!";
}
}
?>
Обращение к статическому методу
Вызов статического метода состоит из трёх частей: сначала имя класса, затем двойное двоеточие (::) и, наконец, имя метода.
В следующем примере объявляется статический метод с именем welcome() и вызывается именно в такой форме. Обратите внимание, что объект вообще не создаётся:
Пример
Вызовите статический метод через имя его класса:
Вывод: PHP-скрипт
<?php
class greeting {
// статический метод
public static function welcome() {
echo "Hello World!";
}
}
// Вызов статического метода напрямую
greeting::welcome();
?>
Пример
Здесь статический метод sum() объявляется, а затем вызывается в той же форме: имя класса, ::, имя метода:
Вывод: PHP-скрипт
<?php
class calc {
// статический метод
public static function sum($x, $y) {
return $x * $y;
}
}
// Вызов статического метода
$res = calc::sum(6, 4);
echo $res;
?>
Синтаксис обращения к статическому методу
Общая форма вызова статического метода:
<?php
ClassName::staticMethod();
?>
PHP — Подробнее о статических методах
Статические и нестатические методы могут сосуществовать в одном классе. Чтобы обратиться к статическому методу из другого метода того же класса, напишите self и двойное двоеточие (::) перед его именем:
Пример
Здесь конструктор вызывает статический метод своего класса через self:
Вывод: PHP-скрипт
<?php
class greeting {
// статический метод
public static function welcome() {
echo "Hello World!";
}
// нестатический метод
public function __construct() {
self::welcome();
}
}
new greeting();
?>
Пример
Метод другого класса тоже может вызвать статический метод, если этот статический метод имеет модификатор public:
Вывод: PHP-скрипт
<?php
class A {
public static function welcome() {
echo "Hello World!";
}
}
class B {
public function message() {
A::welcome();
}
}
$obj = new B();
echo $obj -> message();
?>
Пример
Внутри дочернего класса вызывайте статический метод родителя с помощью ключевого слова parent. В этом случае статический метод может быть либо public, либо protected.
Вывод: PHP-скрипт
<?php
class domain {
protected static function getWebsiteName() {
return "PromptCookbook";
}
}
class domainW3 extends domain {
public $websiteName;
public function __construct() {
$this->websiteName = parent::getWebsiteName();
}
}
$domainW3 = new domainW3;
echo $domainW3 -> websiteName;
?>