Как установить и использовать Composer, диспетчер зависимостей PHP
Composer — это любимый менеджер зависимостей PHP-сообщества. Это упрощает установку, обновление и использование сторонних пакетов. Пакеты могут размещаться в общедоступных и частных репозиториях, при этом наиболее популярные проекты публикуются в Packagist.
Установка Композитора
Composer — это работа сообщества, которая не связана с PHP. Он распространяется в виде архива PHP PHAR с сайта getcomposer.org. Некоторые дистрибутивы Linux включают Composer в свои репозитории программного обеспечения, но установка таким образом обычно приводит к устаревшей версии.
Прежде чем продолжить, убедитесь, что у вас установлен PHP. PHP 5.3 — самая старая поддерживаемая версия на момент написания. Вам также понадобятся git
и unzip
в вашей системе, если вы хотите установить пакеты из исходного кода.
Composer предоставляет сценарий автоматической установки. Начните с загрузки установщика в свой рабочий каталог:
curl https://getcomposer.org/installer -o composer-setup.php
Теперь вы должны проверить хэш установщика, чтобы убедиться, что он не был подделан. Посетите веб-сайт Composer, чтобы проверить последний хэш и получить образец кода подтверждения.
Затем используйте сценарий установки для установки Composer:
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Это загрузит Composer в /usr/local/bin
, что позволит ему находиться на вашем пути вместе с другими исполняемыми файлами. Попробуйте запустить composer
в своей оболочке, чтобы убедиться, что все работает. Должна отображаться версия Composer, а затем список доступных команд Composer.
Чтобы обновить Composer в будущем, запустите composer self-update
. Это автоматически заменит ваш двоичный файл Composer последней версией. Вам не нужно будет снова использовать скрипт composer-setup.php
, так что вы можете удалить его сейчас.
Подготовка вашего проекта
Вам нужно будет создать файл composer.json
в рабочем каталоге вашего проекта, прежде чем вы сможете начать использовать Composer. Запустите composer init
, чтобы создать его в интерактивном режиме. Это позволит вам настроить базовую конфигурацию.
Следуйте подсказкам командной строки, чтобы предоставить информацию о вашем проекте, такую как его имя, описание и сведения об авторе. Имена пакетов используют синтаксис vendor/package
, чтобы избежать конфликтов между авторами в общедоступных репозиториях. Вы должны использовать свое имя пользователя Packagist в качестве компонента vendor
.
Большинство ключей в composer.json
являются необязательными, если только вы не собираетесь публиковать свою кодовую базу в Packagist. Вы можете найти полное описание структуры файла на сайте документации Composer.
Установка пакетов
Вы можете добавить пакеты в свой проект с помощью команды composer require
:
composer require vendor/package
Найдите пакеты для установки на веб-сайте Packagist. Они будут добавлены в раздел require
файла composer.json
вашего проекта. После установки исходный код пакета помещается в папку vendor
в вашем проекте.
Composer полагается на семантическое управление версиями для обработки обновлений пакетов. Точная версия каждого установленного вами пакета записывается в composer.lock
в каталоге вашего проекта. Это позволяет Composer идентифицировать конкретный пакет для установки, когда composer.json
указывает, что допустим диапазон версий.
Вы должны зафиксировать как composer.json
, так и composer.lock
в системе управления версиями. Затем другие разработчики, работающие над вашим проектом, могут запустить composer install
, чтобы получить все определенные вами зависимости.
Такие пакеты, как средства выполнения тестов, можно пометить как зависимости разработки, указав флаг --dev
в команде require
. Они будут разделены на раздел require-dev
внутри composer.json
. При установке пакетов используйте composer install --no-dev
, чтобы исключить зависимости разработки. Это полезно при использовании Composer в сценариях развертывания и системах непрерывной интеграции.
Обновление пакетов
Вы должны стараться обновлять свои пакеты, чтобы не упустить безопасность и исправления ошибок. Запустите команду composer outdated
, чтобы увидеть список зависимостей в \\composer.json\\, для которых доступны новые версии.
Чтобы применить обновления, запустите composer update
. При этом будет соблюдаться семантическое управление версиями, и будет извлечена самая новая версия каждого пакета в рамках ограничений версии, указанных в вашем composer.json
. Пакет, помеченный как ^1.2
, будет обновлен до 1.2.x или 1.3.x, но не до 2.0. Документы Composer содержат подробную информацию о том, как инструмент разрешает различные формы ограничения версии.
При обновлении пакета ваш файл composer.lock
будет автоматически переписан для указания новой версии. Другие разработчики, работающие над вашим проектом, могут перезапустить composer install
, чтобы получить именно те пакеты, которые вы используете.
Автозагрузчик Composer
Автозагрузка является предпочтительным механизмом для обнаружения исходных файлов в PHP. Composer имеет первоклассную поддержку автозагрузки; в большинстве случаев его автозагрузчик будет единственным файлом, который вам нужен require_once()
в вашем проекте.
Когда вы устанавливаете зависимости, Composer автоматически записывает автозагрузчик в vendor/autoload.php
. Пакеты указывают, как они должны загружаться автоматически, используя поле autoload
в composer.json
. Вы должны настроить это для своего собственного проекта, чтобы Composer также мог автоматически загружать свои файлы:
{ "autoload": { "psr-4": { "ExampleProject\": "src/" } } }
Приведенный выше фрагмент кода настроит автозагрузку вашего проекта с использованием стандарта PSR-4. Ресурсы базы кода в пространстве имен ExampleProject
будут сопоставлены с файлами в каталоге src
— например, use ExampleProjectExampleClassesMyClass> автоматически
require_once(\ src/ExampleProject/ExampleClasses/MyClass.php\)
.
Единственный файл, который вам нужно вручную require_once()
, — это сам автозагрузчик:
require_once(__DIR__ . "/vendor/autoload.php");
Вы должны добавить строку как можно раньше в свое приложение. Это обеспечит включение автозагрузки до того, как вы начнете использовать классы и интерфейсы в своей кодовой базе.
Иногда может потребоваться принудительная регенерация автозагрузчика. Часто это происходит из-за того, что вы обновили конфигурацию autoload
вашего проекта. Вы можете запустить composer dump-autoload
, чтобы написать новый автозагрузчик по требованию.
Краткое содержание
Composer упрощает разработку PHP, предоставляя менеджер зависимостей, отсутствующий в основном языке. Используя Composer, вы можете легко включать сторонний код в свои проекты без необходимости вручную загружать исходные файлы и поддерживать их в актуальном состоянии.
Встроенный автозагрузчик Composer позволяет вам получать доступ к установленным пакетам без каких-либо дополнительных действий с вашей стороны. Инструмент также включает средство запуска сценариев, которое позволяет вам выполнять задачи в вашей кодовой базе, добавляя команды в блок scripts
в composer.json
. Используйте composer run my-script
для запуска скрипта.