Как в проекте сделать автозагрузчик классов (php)?
Как правило, при создании сайта в проект включают немалое число классов, что определяют внутреннюю структуру будущих их экземпляров. Каждый класс, обычно, располагается в отдельном файле. Это утверждение касается как абстрактных, так и обычных классов, в одинаковой мере оно справедливо и для интерфейсов. Те, кто изучает основы сайтостроения, очевидно знают, что подключение файлов с классами в PHP производится с помощью специальных операторов, принимающих в качестве аргумента путь к файлу или по-другому имя файла. При этом путь может быть как относительный, так и абсолютный. Под традиционным простым подключением будем понимать следующее:
Однако такое подключение обладает целым рядом недостатков и тем, кому интересно сайтостроение для начинающих, любопытно будет узнать, что эти недостатки легко обойти с помощью автозагрузчика.
Недостатки традиционного подключения
Среди наиболее очевидных недостатков традиционного подключения файлов с классами можно выделить вероятное их большое число и трудности в последующем управлении подключением. Если таких файлов окажется тысячи, то у вас обязательно возникнут трудности, например, с поиском необходимого файла или с указанием точного имени файла с классом, а это значит и с управлением подключениями.
Основы сайтостроения: собираем файлы с классами в «кучу»
Тем, кого интересует сайтостроение для начинающих, может быть известно, что решить проблемы с подключением файлов, содержащих классы, можно собрав все такие файлы в одном месте — в одной директории. При этом если вы делаете это не на хостинге, а на локальном хосте, то разместите их в корневой директории вашего сайта в папочке под названием, например, lib. Если же вы не перенастраивали свой сервер apache и корневой директорией ваших документов остается htdocs, то располагайте эту папочку именно в этой директории. Иначе расположите ее в той директории, которая переопределяет основную директорию документов сервера apache. Именно в lib будем создавать все наши файлы с классами.
Воспользуемся средствами PHP
Второе что необходимо сделать, так это воспользоваться средством, которое предоставляет сам язык PHP. Это средство называется автозагрузчиком классов и имеет следующий вид:
Мы опустим пока сложные моменты, связанные с регистрацией множества таких автозагрузчиков, — так как эта тема для изучающих основы сайтостроения может показаться сложной — и поговорим об одном, который позволит в проекте подгружать классы автоматически там, где это будет необходимо. Этот автозагрузчик придется еще переопределить и поместить его в отдельный файл, который в проекте будет исполнять роль конфигурационного при подключении классов. При этом еще следует добавить, что этот автозагрузчик справится и с теми классами, которые окажутся по какой-то причине не в папке lib. Сам же конфигурационный файл расположим все в той же хорошо знакомой папочке lib.
Переопределение автозагрузчика
В функцию нашего автозагрузчика передадим параметр, которым в каждом случае окажется какое-либо имя класса. В самой же функции понадобится определить массив, в индексах которого пропишем имена наших классов, а в значениях данного массива укажем пути к файлам этих классов. При этом в имени файла будем использовать глобальную переменную $_SERVER[] с литералом «DOCUMENT_ROOT». Так, мы сможем получить точный путь к корневой директории нашего сайта. Через конкатенацию нам необходимо будет лишь дополнить путь к файлу его точным значением. Так, в массиве автозагрузчика необходимо прописать каждый наш класс и файл, где он расположен. А следующим шагом станет проверка на существование в массиве переданного в функцию в качестве параметра класса. Если он указан в нашем конфигурационном файле и существует, то автозагрузчик сумеет подгрузить его через оператор подключения. В противном случае мы прервем выполнение функции оператором return. У нас получится нечто похожее на это:
Тем, кто изучает основы сайтостроения, интересно будет узнать, что чтобы воспользоваться возможностями автозагрузчика, нам потребуется в каждом файле, где мы хотим его использовать подключить созданный конфигурационный файл.
Если класс еще не был загружен, автозагрузчик подгрузит его и, изучающий сайтостроение для начинающих, спокойно сможет создавать экземпляры этого класса.
- Артур Аблезев в Reg ru
- Инженер в Reg ru
- Евгений. в Ddos Guard
- Reg ru оценили на 10
- Reg ru оценили на 10
- Ddos Guard оценили на 10
Последние свежие отзывы о статье "Как в проекте сделать автозагрузчик классов (php)?"