Richter web-программист: создание сайтов, написание интернет-магазинов, создание скриптов на PHP, MySQL, JavaScript. Системы управления сайтом, CMS.
English version

Статьи веб-программиста: Composer: как это работает

Система построения сайта SBS "Web-Pro"
SBS Web-Pro Средство для создания и удобного управления сайтом, имеющее расширенные по сравнению с CMS (Content Management System) характеристики. Более 5 лет успешного использования. Подробнее
Пишите!
Telegram
@richter_a

Composer: как это работает

К списку статей

Уже рассматривалось, что такое Composer, и что он делает. Теперь посмотрим, как он это делает, и какие изменения вносит в проект.

Composer выполняет два основных действия - управляет (устанавливает, удаляет и т.п.) пакетами и организует автозагрузку классов и файлов.
Автозагрузка это одно из главных достоинств этого менеджера - вам не нужно вручную подключать классы установленных пакетов (а их бывает очень много), всё будет сделано автоматически. Вам останется только вставить единственную строку вызова автозагрузчика autoload.php.

Файловая структура Composer

Composer создает в корне проекта файлы composer.json, composer.lock и папку vendor с файлами. Рассмотрим их подробнее.

composer.json

Это управляюще-описательный файл проекта. Он определяет, что это за проект, какие в нём пространства имён, классы, включаемые файлы, зависимости и т.п. Этот файл говорит Composer'у, какие пакеты нужно скачивать, обновлять и т.п. Это главный и самый важный файл для работы менеджера. Причем в корне находится файл вашего проекта, но у каждого пакета есть собственные composer.json, лежащие в корне каждого пакета. В свою очередь по этим файлам менеджер смотрит, какие какому пакету требуются зависимые пакеты для работы.

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

composer.lock

Этот файл описывает, какие версии пакетов установлены в проекте в настоящий момент (он создается после установки или внесения изменений). Это нужно, например, при совместной работе, чтобы у вас и коллег использовались одинаковые версии пакетов.

При этом имеется разница в работе команд install и update Composer'а. Команда install проверяет наличие файла composer.lock, и если он есть, устанавливает версии пакеты, указанные в нём. А команда update сразу смотрит файл composer.json и устанавливает новейшие пакеты.

Этот файл также не нужен в процессе работы проекта.

vendor

В эту папку Composer скачивает все пакеты, необходимость которых описана в composer.json. Изменять что-либо вручную в этой папке не следует.

Помимо папок пакетов, здесь размещена папка самого Composer'а - composer. В ней находятся файлы автозагрузки - их Composer создает, основываясь на разделе autoload файлов composer.json.

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

Папка vendor необходима при работе проекта, но напротив, при переносе проекта её можно безболезненно удалить, а потом восстановить командой Composer.

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

При установке проекта или пакета Composer смотрит composer.json и находит зависимые пакеты, а также данные автозагрузки. На основании этого он вносит изменения в файлы автозагрузки PHP, находящиеся в vendor/composer/. Далее он устанавливает пакеты и снова вносит изменения в файлы, уже основываясь на файлах composer.json этих пакетов. На этом этап установки закончен.

В процессе работы проекта используются созданные файлы автозагрузки. В них находятся карты пространств имен, классов, файлов и соответственно их расположение. Ну а дальше используется стандартный механизм автозагрузки PHP по этим картам. Чтобы внести изменения в эти карты (при установке/удалении пакетов или изменении собственных скриптов) нужно снова выполнить команды Composer'а, который будет основываться на файлах composer.json.

Читайте также:
Как создать проект для Composer
Как настроить автозагрузку

© 2018 Richter
Распространение только с разрешения автора
Рейтинг: 1.0. Голосов: 1
(0) Добавить комментарий

Наверх