
Как автоматически загружать классы с помощью Composer в PHP
В этой статье мы обсудим основы автозагрузки в PHP и как автоматически загружать классы PHP с помощью Composer. Я объясню, почему автозагрузка так важна, и покажу вам, как использовать Composer для автозагрузки шаг за шагом. Я также объясню разницу между различными видами автозагрузки в Composer.
Зачем нам нужна автозагрузка?
При создании PHP-приложений может потребоваться использование сторонних библиотек. И, как вы знаете, если вы хотите использовать эти библиотеки в своем приложении, вам нужно включить их в свои исходные файлы с помощью операторов require или include.
Эти операторы require или include подходят, если вы разрабатываете небольшие приложения. Но по мере роста вашего приложения список операторов require или include становится все длиннее и длиннее, что немного раздражает и затрудняет поддержку. Другая проблема с этим подходом заключается в том, что вы загружаете все библиотеки в свое приложение, включая части, которые вы даже не используете. Это приводит к большему объему памяти для вашего приложения.
Чтобы решить эту проблему, было бы идеально загружать классы только тогда, когда они действительно нужны. Вот где в дело вступает автозагрузка. По сути, когда вы используете класс в своем приложении, автозагрузчик проверяет, загружен ли он уже, и если нет, то автозагрузчик загружает нужный класс в память. Таким образом, класс загружается на лету там, где это необходимо — это называется автозагрузкой. Когда вы используете автозагрузку, вам не нужно включать все файлы библиотеки вручную; вам просто нужно подключить файл автозагрузчика, который содержит логику автозагрузки, и необходимые классы будут подключены динамически.
Позже в этой статье мы рассмотрим автозагрузку с помощью Composer. Но сначала я объясню, как можно реализовать автозагрузку в PHP без Composer.
Как работает автозагрузка с Composer
Во-первых, убедитесь, что Composer установлен в вашей системе. Когда дело доходит до автозагрузки с помощью Composer, вы можете выбрать один из нескольких методов.
В частности, Composer предоставляет четыре различных метода автозагрузки файлов:
- file autoloading
- classmap autoloading
- PSR-0 autoloading
- PSR-4 autoloading
В этой статье, мы рассмотрим автозагрузку по стандарту psr-4, т.к. она является наиболее оптимальной и рекомендована на официальном сайте Composer.
Прежде чем мы продолжим, давайте быстро рассмотрим шаги, которые необходимо выполнить, если вы хотите использовать автозагрузку Composer.
Убедитесь, что файл composer.json находится в корне вашего проекта или библиотеки. Он должен содержать директивы, основанные на типе автозагрузки. Если его нет, выполните следующие шаги:
- Откройте командную строку.
- Перейдите в папку вашего проекта, например cd C:\project
- Выполните следующую команду — composer init
- Введите имя пакета/проекта. Обычно имя пакета/проекта имеет вид <vendor>/<name>, где vendor - Ваш логин на github, name - название проекта. Нажмите Enter.
- Введите описание проекта. Нажмите Enter.
- В следующей строке вас спросят об авторе. Автора можно указать в следующем формате: имя фамилия <email>. Обратите внимание, что emal обернут знаками <> . Если не хотитет указывать автора, просто нажмите Enter.
- Что касается «Minimum Stability», это зависит от проекта , но для этого примера просто нажмите клавишу ввода, и по умолчанию он будет «stable».
- Package Type (тип пакета) может быть одним из следующих: Package, project, Library, meta-package или composer-plugin. Подбери что актуально, а в данном случае я указал project.
- Следующий вопрос - Лицензия. Если на Ваш проект/код будет распространятся какая-то лицензия, то вам нужно будет указать ее, если нет, просто нажмите Enter.
- В следующей строке вас спросят, хотите ли вы определить свои зависимости, в этот момент введите no и нажмите Enter, и повторите то же самое для dev-зависимостей.
- Наконец, введите yes, чтобы подтвердить свои настройки, и Composer сгенерирует файл.
Ваш файл composer.json готов. Теперь добавим автозагрузку. Для этого в файл composer.json добавьте следующее:
{
"autoload": {
"psr-4": {
"App\\": "app"
}
}
}
Важно отметить, что мы добавили обратную косую черту в конце пространств имен. Приведенное выше сопоставление сообщает Composer, что все, что начинается с пространства имен App, должно быть доступно в каталоге app. Например, если вы запросите класс App\Foo, Composer попытается загрузить файл app\Foo.php.
Запустите команду composer dump-autoload, чтобы сгенерировать необходимые файлы, которые Composer будет использовать для автозагрузки. Включите оператор require 'vendor/autoload.php' в начало файла, где вы хотите использовать автозагрузку, например в index.php.
Оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи