Класс “GlobalVariables”

cms-core

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

Так как я намереваюсь вносить изменения в ядро CMS, то необходимо определиться со структурой папок в моём проекте. Она будет следующей:

Класс "GlobalVariables"

Папка “admin” будет содержать в себе все файлы, необходимые для работы административной панели.

Папка “content” включает в себя такие папки как: “languages”, “plugins”, “uploads”. Первая папка будет содержать языковые файлы. Вторая все установленные плагины. Третья все загруженные файлы. Кроме того в данной папке могут быть созданы иные директории.

Класс "GlobalVariables"

Папка “includes” включает следующие директории:

  • core” – в этой папке будут храниться файлы, формирующие ядро системы.
  • engine” – эта папка для файлов самого движка CMS
  • js” – тут будут храниться все javascript файлы
  • css” – файлы стилей будут находиться здесь
Класс "GlobalVariables"

В папке “public” кроме файла “index.php” будут располагаться шаблоны сайта, файл конфигураций сайта и ещё некоторые вспомогательные файлы.

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

Класс “GlobalVariables” и его функции

Итак создадим файл “GlobalVariables.php” в папке “core”. В нём укажем пространство имён “Wp\Core”. Любой файл, что находится в папке “core”, будет иметь это пространство имён. Если файл находится в папке “engine”, тогда пространство имён будет “Wp\Engine”. Заметьте, что имя класса полностью соответствует имени файла.

globals_1

Добавим перед классом ключевое слово “final”, тем самым делаем невозможным наследование этого класса. Далее добавляем оператор “implements”. Тем самым мы сообщаем, что в классе “GlobalVariables” должны быть реализованы методы интерфейса “ArrayAccess”. После в теле класса прописываем статическую переменную “$instance”. С помощью ключевого слова “private” закрываем переменную от внешнего доступа. Далее в этой переменной мы будем хранить ссылку на экземпляр текущего класса.

Создадим массив “variables”, в котором будут хранится все наши глобальные переменные. Поскольку нам придётся добавлять, удалять и обновлять переменные, то крайне важно работать с одним и тем же объектом. Поэтому стоит обратить внимание на функцию “getInstance()”.

globals_2

В ней первым делом проверяется переменная “$instance”. Если она ничего не содержит, тогда происходит инициализация текущего класса с помощью конструкции “new self()”. После инициализации ссылка на этот класс сохраняется в переменной “$instance”, а эта переменная возвращается функцией. Если же переменная ” $instance” что-то содержит, то она сразу возвращается функцией “getInstance()”. Такой механизм реализации доступа к классу называется “Синглтон (Singleton)“. Он, как раз, позволяет получать доступ к одному и тому же объекту.

globals_3

Теперь необходимо реализовать методы для работы с массивом глобальных переменных:

  • offsetExists – проверяет существование глобальной переменной, имя которой указывается в параметре “$offset”.
  • offsetGet – получает содержимое глобальной переменной, имя которой указывается в параметре “$offset”.
  • offsetSet – устанавливает для глобальной переменной, имя которой указывается в параметре “$offset”, новое значение, указываемое в параметре “$value”.
globals_4
  • offsetUpdate – заменяет значение глобальной переменной, имя которой указывается в параметре “$offset”, значением, указываемым в параметре “$value”.
  • offsetUnset – удаляет глобальную переменную, имя которой указывается в параметре “$offset”, из массива.

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

You may also like...

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

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

  • Sign up
Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.