• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

FREEHOST.WIKI

Что такое Composer в PHP и для чего он нужен?

Статья также доступна на украинском (перейти к просмотру).

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

Чаще всего пакеты нужные для:

  • работы с сторонними API;

  • отправка HTTP-запросов к другим серверам;

  • логирование;

  • отправки электронной почты;

  • работы с базами данных;

  • и решения других типовых задач.

При ручной настройке разработчику нужно было бы регулярно повторять ряд действий – от поиска библиотек к обновление и управление зависимостями PHP-проекта. Для автоматизации процесса есть инструмент под названием Composer.

Что такое Composer в PHP?

Composer – это пакетный менеджер зависимостей PHP, управляющий ими в проекте. Он позволяет описать, какие именно посторонние библиотеки нужны (а также, при необходимости, какие именно версии). После этого механизм сам анализирует, какие версии посторонних компонентов имеют совместимость между собой, загружает их из интернета и устанавливает в проект.

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

Зачем нужен Composer?

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

Менеджер по зависимостям PHPМенеджер по зависимостям PHP автоматизирует каждый шаг, если указать название нужного пакета. Composer упрощает:

  • установкаPHP-библиотек и их зависимостей;

  • контроль версий;

  • обновление – оно выполняется одной командой;

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

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

Как работает Composer?

Чтобы установить пакет Monolog, необходимо создать файл конфигурацииcomposer.json. В нем указываются необходимые библиотеки и их версии. Файл будет выглядеть так: 

{
    "require": {
        "monolog/monolog": "^3.0"
    }
}

Здесь есть две основные части:

  1. monolog/monolog – это название пакета PHP или библиотеки для установки;

  2. ^3.0 – это указание на допустимую версию.

Прочитав этот файл, Composer PHP обращается к официальному хранилищу.  Packagist (или другим источников), ищет и загружает нужные пакеты, на которые было указано. Packagist – это основной публичный каталог пакетов PHP по умолчанию, своего рода «магазин» сторонних компонентов.

Что такое composer.json и composer.lock?

Функции этих файлов отличаются:

  • composer.json создается человеком и описывает зависимости PHP-проекта и требования к ним – это своеобразная техническая задача;

  • composer.lock создается менеджером пакетов PHP и содержит конкретные установленные версии пакетов – это фиксация того, что инструмент по факту скачал и установил.

Что такое composer.json и composer.lock

Такое разделение нужно для унификации – если просто ориентироваться на composer.json, в разное время были бы доступны разные версии пакетов, например, 3.4.0 сегодня, а через неделю – уже 3.5.0. А вот файл composer.lock гарантирует, что программное окружение будет одинаковым на компьютере разработчика, в тестовой среде и на продакшн-сервере. Именно поэтому его обычно хранят в Git вместе с остальными файлами проекта.

Если проект использует собственные или закрытые пакеты, Composer также можно настроить для работы с приватным репозиторием Composer.

Что такое каталог vendor?

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

Компонент также занимается автозагрузкой классов. Без него пришлось бы вручную прописывать подключение (require или include) для каждого отдельного файла каждой установленной библиотеки. А вот Composer создает файл автозагрузки PHP в начале работы:

require __DIR__ . '/vendor/autoload.php'

Каталог vendor обычно не хранят в Гит-репозитории – его добавляют в файл .gitignore, чтобы исключить из системы контроля версий, так как он обычно достаточно велик, а его легко воспроизвести. Поэтому каждая среда самостоятельно создает собственную копию каталога vendor.

Основные команды Composer

В начале работы следует ознакомиться с несколькими базовыми командами менеджера зависимостей PHP. Для их использования также необходимо подготовить окружение PHP в Ubuntu.

Основными командами считаются:

  • composer require vendor/package – добавляет новую зависимость;

  • composer install – устанавливает все зависимости, опираясь именно на зафиксированные версии из файла composer.lock;

  • composer update – проверяет, доступны ли более новые версии зависимостей (в пределах ограничений, указанных в composer.json) и обновляет их;

  • composer remove vendor/package – удаляет указанную зависимость из проекта полностью, вместе с файлами из каталога vendor.

Команды composer install и composer update часто путают, но они выполняют разные функции. Первая устанавливает именно те версии библиотек PHP, которые уже были зафиксированы ранее в composer.lock, и не делает обновление. Ее используют для воспроизведения имеющегося окружения. А вот update – это команда, которая активно ищет более новые версии зависимостей и обновляет как сами PHP-библиотеки, так и файл composer.lock. После ее применения возможно изменение поведения библиотек.

Где используется Composer?

Composerде-факто давно стало стандартом в экосистеме и используется практически во всех проектах разного масштаба и уровня.

Его используют для автоматизации в:

  • фреймворках Symfony и Laravel;

  • независимых PHP-библиотеках, который разработчики подключают к собственным проектам;

  • SDK (наборы инструментов) для работы со сторонними сервисами;

  • клиентах для работы с разнообразными API;

  • библиотеках для логирования, кэширования, а также удобной работы с базами данных.

Поэтому изучение его функционала – почти обязательный навык для PHP-разработчика.

Composer на хостинге

Знание Composer PHP полезно не только при написании кода, но и на практическом этапе размещения проекта на сервере или хостинге. Во время современного деплоя PHP-проекту часто необходимо выполнить composer install. Так устанавливаются именно те версии библиотек, которые зафиксированы в файле composer.lock, – то есть те самые, с которыми проект разрабатывался и тестировался.

Именно поэтому при выборе хостинга следует заранее обращать внимание на несколько моментов:

  • поддерживается ли нужная версия PHP;

  • есть ли SSH-доступ для выполнения команд непосредственно на сервере;

  • или вообще реализована возможность запускать Composer.

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

Заключение

Composer — это менеджер пакетов PHP. Он существенно упрощает работу с сторонними библиотеками – автоматически устанавливает их, контролирует версии и зависимости, а также позволяет воспроизвести совершенно одинаковое программное окружение как во время разработки, так и во время тестирования и развертывания проекта. Понимание базовых принципов работы и основных команд менеджера – это важный навык для любого современного разработчика.

Разместите PHP-проект на Unix-хостинге FREEhost.UA

Unix-хостинг для сайтов и PHP-проектов с поддержкой современных технологий и удобным управлением.

Стабильная инфраструктура, надежная работа сайтов и поддержка специалистов FREEhost.UA – все необходимое для размещения вашего проекта.

ДРУГИЕ СТАТЬИ ПО ТЕМЕ

Спасибо, что выбираете FREEhost.UA