Как в проекте сделать автозагрузчик классов (php)?

     Как правило, при создании сайта в проект включают немалое число классов, что определяют внутреннюю структуру будущих их экземпляров. Каждый класс, обычно, располагается в отдельном файле. Это утверждение касается как абстрактных, так и обычных классов, в одинаковой мере оно справедливо и для интерфейсов. Те, кто изучает основы сайтостроения, очевидно знают, что подключение файлов с классами в PHP производится с помощью специальных операторов, принимающих в качестве аргумента путь к файлу или по-другому имя файла. При этом путь может быть как относительный, так и абсолютный. Под традиционным простым подключением будем понимать следующее:

основы сайтостроения: простое подключение файла с классом

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

Недостатки традиционного подключения

 

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

Основы сайтостроения: собираем файлы с классами в «кучу»

 

    Тем, кого интересует сайтостроение для начинающих, может быть известно, что решить проблемы с подключением файлов, содержащих классы, можно собрав все такие файлы в одном месте — в одной директории. При этом если вы делаете это не на хостинге, а на локальном хосте, то разместите их в корневой директории вашего сайта в папочке под названием, например, lib. Если же вы не перенастраивали свой сервер apache и корневой директорией ваших документов остается htdocs, то располагайте эту папочку именно в этой директории. Иначе расположите ее в той директории, которая переопределяет основную директорию документов сервера apache. Именно в lib будем создавать все наши файлы с классами.

основы сайтостроения: директория lib

 

Воспользуемся средствами PHP

 

    Второе что необходимо сделать, так это воспользоваться средством, которое предоставляет сам язык PHP. Это средство называется автозагрузчиком классов и имеет следующий вид:

основы сайтостроения: автозагрузчик

 

     Мы опустим пока сложные моменты, связанные с регистрацией множества таких автозагрузчиков, — так как эта тема для изучающих основы сайтостроения может показаться сложной — и поговорим об одном, который позволит в проекте подгружать классы автоматически там, где это будет необходимо. Этот автозагрузчик придется еще переопределить и поместить его в отдельный файл, который в проекте будет исполнять роль конфигурационного при подключении классов. При этом еще следует добавить, что этот автозагрузчик справится и с теми классами, которые окажутся по какой-то причине не в папке lib. Сам же конфигурационный файл расположим все в той же хорошо знакомой папочке lib.

основы сайтостроения: расположение конфигурационного файла

 

Переопределение автозагрузчика

 

     В функцию нашего автозагрузчика передадим параметр, которым в каждом случае окажется какое-либо имя класса. В самой же функции понадобится определить массив, в индексах которого пропишем имена наших классов, а в значениях данного массива укажем пути к файлам этих классов. При этом в имени файла будем использовать глобальную переменную $_SERVER[] с литералом «DOCUMENT_ROOT». Так, мы сможем получить точный путь к корневой директории нашего сайта. Через конкатенацию нам необходимо будет лишь дополнить путь к файлу его точным значением. Так, в массиве автозагрузчика необходимо прописать каждый наш класс и файл, где он расположен. А следующим шагом станет проверка на существование в массиве переданного в функцию в качестве параметра класса. Если он указан в нашем конфигурационном файле и существует, то автозагрузчик сумеет подгрузить его через оператор подключения. В противном случае мы прервем выполнение функции оператором return. У нас получится нечто похожее на это:

основы сайтостроения: пример перегруженного автозагрузчика

 

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

основы сайтостроения: подключение файла с автозагрузчиком

 

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

Последние комментарии
Последние оценки
Спонсорский раздел

Последние свежие отзывы о статье "Как в проекте сделать автозагрузчик классов (php)?"

Комментарии отсутствуют, станьте первым и расскажите другим, что вы думаете!
Внимание! Комментировать и оценивать материалы могут только зарегистрированные пользователи
Добавлено 10.09.2014 в Статьи
Это интересно? А теперь сделай приятно своим друзьям, поделись всего в один клик

Вверх