Статические члены и методы класса в PHP
Опубликовано: 06.09.2018
Для того чтобы воспользоваться методами и членами класса, не обязательно объявлять его объект, достаточно ключевого слова "static" которое сделает их доступными без объявления объекта класса. В этом случае обращение к компоненту класса выполняется при помощи оператора видимости "::". Особенность статических членов классов это возможность их инициализации непосредственно при объявлении.
Пример объявления статического метода класса:
class NewMyStatic { public static $NewMyStatic = '"Статический член (переменная)"'; } // Обращение к статическому члену класса "NewMyStatic" без объявления объекта класcа "new NewMyStatic()"; echo NewMyStatic::$NewMyStatic;А так же к статическим членам класса нельзя обращаться через префикс "$this->" и они не отображаются при вызове дампа.
Модуль 28. Модификатор static. Статические классы и члены классов в языке C#
Сейчас приведём модифицированный вариант изменения значения статического члена класса "$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(); // Вызов статического метода;tillad
7108