После авторизации Вы получите доступ к файлам, скрытым материалам сайта, исходным кодам
возможность комментировать и т.д.

Вы можете авторизоваться на сайте всего одним кликом:

2016-08-01
Основы PHP → Статические члены классов
PHP, Static, Статический метод, Статическая переменная, Глобальный

В этом уроке я расскажу Вам, что такое Статические члены классов и какую важную роль они выполняют. Вы узнаете, что это такое и научитесь правильно их использовать...

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

Определения классов могут включать статические члены (как свойства, так и методы), доступ к которым осуществляется через класс.

Когда мы имеем дело с объектами, то говорим об отдельных экземплярах какого-либо класса. У каждого объекта свои значения для полей класса. Статические же члены классов всегда существуют в единственном экземпляре. Они как бы общие для всех объектов данного класса. Иными словами, нельзя сказать, что статический член принадлежит какому-либо объекту. Статические члены принадлежат именно классу.

Если вернуться к примеру с геометрическими фигурами, то статическим членом класса Фигура может стать какая-либо геометрическая константа, например число. Оно может использоваться в различных вычислениях внутри методов классов, описывающих геометрические фигуры, но его значение едино для всех объектов.

Для объявления статических членов класса используется ключевое слово static.

static public $instance = NULL;

Так можно объявить статическое поле класса и инициировать его нулевым значением.

Обращение к статическим свойствам внутри методов класса происходит с помощью ключевого слова self, после которого следует название статического поля с лидирующим символом $. Пример:

class Singleton
{
   static private $instance = NULL;

   static public function getInstance()
   {
      if (self::$instance == NULL)
      {
         self::$instance = new Singleton();
      }
      return self::$instance;
   }
}

Обратите внимание, что в приведенном примере функция getInstance() также является статической. Это значит, что она может работать только со статическими элементами класса, т. к. она не принадлежит какой-либо конкретной реализации объекта.

Для вызова статических методов класса используется следующий синтаксис:

<имя_класса>::<имя_метода>(<передаваемые_параметры>)

Пример:

$instance = Singleton::getInstance();

Статические члены используются, когда требуется выделить данные, которые должны присутствовать в программе в единственном экземпляре. Например, это может быть дескриптор соединения с базой данных. В большинстве своих сценариев мы работаем с одной базой данной, с которой устанавливаем соединение в начале работы сценария и закрываем соединение в момент завершения сценария. Несмотря на то, что в ходе работы сценария мы можем выполнять большое количество запросов к базе данных, дескриптор соединения для этих целей требуется всего один. Таким образом, его можно хранить в статическом члене класса, описывающего работу с базой данных.

457
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока