Статические члены и методы класса в PHP
Вход Регистрация

Статические члены и методы класса в PHP

Для того чтобы воспользоваться методами и членами класса, не обязательно объявлять его объект, достаточно ключевого слова "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(); // Вызов статического метода;

Комментировать

captcha

Вход

Зарегистрируйтесь, если нет учетной записи

Напомнить пароль
Регистрация
Напомнить пароль
Войти в личный кабинет