Для того чтобы воспользоваться методами и членами класса, не обязательно объявлять его объект, достаточно ключевого слова "static" которое сделает их доступными без объявления объекта класса. В этом случае обращение к компоненту класса выполняется при помощи оператора видимости "::". Особенность статических членов классов это возможность их инициализации непосредственно при объявлении.
Пример объявления статического метода класса:
class NewMyStatic {
public static $NewMyStatic = '"Статический член (переменная)"';
}
// Обращение к статическому члену класса "NewMyStatic" без объявления объекта класcа "new NewMyStatic()";
echo NewMyStatic::$NewMyStatic;
А так же к статическим членам класса нельзя обращаться через префикс "$this->" и они не отображаются при вызове дампа.
Сейчас приведём модифицированный вариант изменения значения статического члена класса "$NewMyStatic", метод "object_set()" которого изменит значение статического члена "$NewMyStatic" при помощи префикса "$this->".
Пример использования префикса "$this->" для изменения значения статического члена:
class NewMyStatic {
public static $NewMyStatic = 5;
public function object_set($_value) {
$this->NewMyStatic = $_value;
}
}
$new_class = new NewMyStatic();
echo '<pre>';
print_r($new_class);
echo '</pre>';
$new_class->object_set(10);
echo NewMyStatic::$NewMyStatic;
echo '<pre>';
print_r($new_class);
echo '</pre>';
Результат выведет следующие строки:
NewMyStatic Object
(
)
5
NewMyStatic Object
(
[NewMyStatic] => 10
)
Данная попытка обратиться к статическому члену класса "NewMyStatic" через префикс "$this->" приводит к созданию нового члена класса, при этом, не изменяя значение статического члена. Это связано с тем, что в отличии от других членов класса, статические члены являются общими для всех объектов класса, а это означает, что изменение значения статической переменной одного объекта отражается на значение данной переменной всех остальных объектов.
Статическими могут быть и методы класса. Для создания статического метода также используется слово "static", а для обращения оператор видимости "::".
Объявим статический метод:
class NewMyStatic {
public static mymethod_static() {
return 'Осуществился вызов статического метода класса "NewMyStatic"';
}
}
echo NewMyStatic::mymethod_static(); // Вызов статического метода;
8167