Как автоматически загружать классы с помощью Composer в PHP

Как автоматически загружать классы с помощью Composer в PHP

В этой статье мы обсудим основы автозагрузки в PHP и как автоматически загружать классы PHP с помощью Composer. Я объясню, почему автозагрузка так важна, и покажу вам, как использовать Composer для автозагрузки шаг за шагом. Я также объясню разницу между различными видами автозагрузки в Composer.

Зачем нам нужна автозагрузка?

При создании PHP-приложений может потребоваться использование сторонних библиотек. И, как вы знаете, если вы хотите использовать эти библиотеки в своем приложении, вам нужно включить их в свои исходные файлы с помощью операторов require или include.

Эти операторы require или include подходят, если вы разрабатываете небольшие приложения. Но по мере роста вашего приложения список операторов require или include становится все длиннее и длиннее, что немного раздражает и затрудняет поддержку. Другая проблема с этим подходом заключается в том, что вы загружаете все библиотеки в свое приложение, включая части, которые вы даже не используете. Это приводит к большему объему памяти для вашего приложения.

Чтобы решить эту проблему, было бы идеально загружать классы только тогда, когда они действительно нужны. Вот где в дело вступает автозагрузка. По сути, когда вы используете класс в своем приложении, автозагрузчик проверяет, загружен ли он уже, и если нет, то автозагрузчик загружает нужный класс в память. Таким образом, класс загружается на лету там, где это необходимо — это называется автозагрузкой. Когда вы используете автозагрузку, вам не нужно включать все файлы библиотеки вручную; вам просто нужно подключить файл автозагрузчика, который содержит логику автозагрузки, и необходимые классы будут подключены динамически.

Позже в этой статье мы рассмотрим автозагрузку с помощью Composer. Но сначала я объясню, как можно реализовать автозагрузку в PHP без Composer.

Как работает автозагрузка с Composer

Во-первых, убедитесь, что Composer установлен в вашей системе. Когда дело доходит до автозагрузки с помощью Composer, вы можете выбрать один из нескольких методов.

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

  1. file autoloading
  2. classmap autoloading
  3. PSR-0 autoloading
  4. 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.

 

Комментарии 0

Оставить комментарий


Комментарии могут оставлять только зарегистрированные пользователи

shape shape