Перейти к содержанию

3.4 Класс «Autoloader». Карта классов

Last updated on 09.05.2021

autoloader2

Карта классов позволяет автоматически подключать любой файл «.php» проекта. А это избавляет разработчика от лишних трудов. Прописывать путь к каждому файлу (особенно если их десятки, а может и сотня) — это очень утомляет. Поэтому для работы с картой классов нам понадобятся несколько методов.

Метод getClassMap()

Метод addClassMap()

Метод addToClassMap()

Методы removeClassMap() и removeFromClassMap()

Метод getClassMap()

Данный метод возвращает ассоциативный массив «classMap«.

карта классов

В этом массиве ключом является комбинация пространства имени класса и его названия. А вот значением же служит полный путь к файлу, в котором был объявлен этот класс. Это и есть карта классов.

Метод addClassMap()

Этот метод добавляет к существующей карте класса группу дополнительных записей. Данному методу передаётся ассоциативный массив, построенный по тому же принципу, что и массив «classMap«. При запуске данного метода, в первую очередь проводится проверка передаваемого параметра. С помощью функции «is_array()» выясняем, является ли этот параметр массивом. Если это так, тогда проверяем является ли он ассоциативным массивом. Если это так, тогда используем функцию «array_merge()» для слияния двух массивов.

Метод addToClassMap()

Этот метод позволяет добавлять к карте класса одиночные записи. Для этого данному методу передаются:

  • Пространство имён через параметр»$prefix»
  • Имя класса через параметр»$class»
  • Путь к файлу класса через параметра»$path»
autoload-4

Если переменной «$prefix» можно присваивать пустую строку в качестве значения, то для перменных «$class» и «$path» этого делать нельзя. Поэтому при запуске этого метода проводится проверка обеих переменных. Если они не пустые, тогда можно добавить к карте классов новую запись.

Заметьте, что для всех трёх переменных используется конструкция «(string)». Это так называемое «приведение типов«. Оно позволяет значение указанных переменных представить в виде строки. Для нас это крайне важно, поскольку ключ массива «classMap» и его значение должны быть строковыми.

Методы removeClassMap() и removeFromClassMap()

Метод «removeClassMap()» обнуляет весь массив «classMap«. Таким образом удаляется вся карта классов.

Метод «removeFromClassMap()» — удаляет одиночную запись из карты классов. Для этого достаточно указать:

  • Пространство имён через параметр»$prefix»
  • Имя класса через параметр»$class»

Если переменная » $class » прошла проверку, тогда удаляем запись из карты класса с помощью функции «unset()».

Все перечисленные методы предполагают «ручное» добавление классов в массив «classMap«. Но мы ведь создаём автозагрузчик, то есть предполагается, что весь процесс будет происходить в автоматическом режиме. Потому этих методов недостаточно. Далее будут рассмотрены остальные методы класса «Autoloader», которые автоматизируют весь процесс построения карты классов и подключения файлов.

Опубликовано в рубрике3. Класс AutoloaderЯдро Wordpress