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

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