Классы и объекты в PHP: статические свойства и методы. Часть 5

Классы и объекты в PHP: статические свойства и методы. Часть 5

Предположим, что у вас есть класс, в котором выполняется основной функционал программы. Как известно, чтобы обратиться к его данным, нужно создать объект и работать с ним.

В прошлой статье мы изучали наследование классов. Но что, если нам нужно создать простую функцию или свойство, доступ к которой мы хотим получить сразу (миную процедуру создания классов)? В этом случае нам идеально подойдут статические данные.

Для примера создадим класс со статическим свойством и методом:

class Still {
static $message = "Привет я статик!<br>";
static function world() { return self::$message; }
}

Как вы уже поняли, чтобы сделать свойство или метод статическим достаточно перед ним поставить static. Разберем свойства таких данных:

  • static свойства - работают только внутри класса и его методов (с self::) + недоступны напрямую для объектов.
  • static методы - работают только со статическими свойствами внутри класса. Такие методы доступны обычным объектам.

Теперь давайте попробуем вывести такие свойства без создания объекта:

echo Still::$message; //выводим статической свойство через класс
echo Still::world(); //выводим статический метод через класс

Но если есть необходимость, то можно выводить эти свойства и через объект:

$still = new Still();
echo $still->world();

Здесь мы выводим статическое свойство $message через объект.

Как вы уже заметили, внутри метода world() есть self:: - он позволяет обращаться к статическим свойствам внутри методов класса (не из дочернего) Т.е. это своего рода аналог $this, но только для статических данных.

Зачем еще могут понадобиться static данные?

Они доступны из любой точки сценария. Предположим у вас есть основной класс, от которого идет множество объектов (экземпляров класса). Все они работаю с суперклассом. И если вы измените какое-то статическое свойство, то оно повлияет сразу на все экземпляры класса. Естественно, напрямую объект не может обратиться к статическому свойству, но как мы выяснили, он может это сделать с помощью метода, который возвратит данные статики.

И второе, неоспоримое преимущество - мы можем обращаться к статическому свойству или методу напрямую через класс, чтобы не создавать лишний код в виде объекта.

Продолжая тему ООП в PHP рекомендую изучить абстрактные классы, чтобы еще больше поднять свой уровень.

| | Классы и объекты в PHP: статические свойства и методы. Часть 5 | Предположим, что у вас есть класс, в котором выполняется основной функционал программы. Как известно, чтобы обратиться к его данным, нужно создать объ | http://blogprogram.ru/wp-content/uploads/2017/06/695-131x131.jpg

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>