Язык программирования PHP очень стремительно развивается. Ещё несколько лет назад огромным количеством библиотек на все случаи жизни мог похвастаться только Python. Однако сейчас уже разработано огромное количество библиотек для PHP, и все они доступны для установки буквально в несколько команд.
Для этого можно использовать пакетный менеджер composer. Утилита позволяет не только устанавливать сторонние пакеты, но и обновлять их при выходе новых версий, разрешать зависимости, а также очень легко создавать пакеты для своих библиотек. В этой статье мы рассмотрим, как пользоваться Composer для управления пакетами в PHP.
Содержание статьи
Синтаксис и опции Composer
Первое, что необходимо сказать, Composer - это консольная утилита, у неё нет графического интерфейса, однако это не делает её хуже. Вот её синтаксис:
$ composer опции команда
Опций у самой утилиты не так уж много. Давайте рассмотрим самые полезные:
- -h - вывести справку по утилите;
- -q - сокращённый вариант вывода;
- -V - показать версию утилиты;
- -n - не задавать интерактивных вопросов;
- -v, -vv, -vvv - настройка подробности вывода;
- -d - использовать указанную рабочую директорию.
Более интересны команды, которые вы будете постоянно использовать:
- archive - архивирует текущий проект в качестве библиотеки для отправки в Сеть;
- check-platform-reqs - проверяет, соблюдены ли системные требования;
- create-project - создаёт проект на основе пакета в указанную директорию;
- depends - выводит зависимости пакета;
- dump-autoload - обновляет систему автозагрузки классов;
- exec - позволяет выполнять скрипты из установленных пакетов;
- init - создаёт пустой проект в текущей папке;
- list - выводит список доступных команд;
- outdated - выводит список пакетов, для которых есть обновления;
- prohibits - выводит названия пакетов, которые мешают установить указанный пакет;
- search - поиск пакетов в репозиториях;
- self-update - обновление Composer до последней версии, работает только при локальной установке;
- show - информация о пакете;
- update - обновляет все пакеты до самой актуальной версии.
Большинство из этих опций мы разберём чуть ниже, в примерах использования composer. А пока давайте посмотрим, как его установить.
Установка Composer
Прежде, чем что-либо делать, утилиту надо установить. Инсталлировать Composer можно глобально для всей операционной системы или только в опредёленную папку. Для глобальной установки в Ubuntu используйте команду:
sudo apt install composer
Кроме того, существует возможность установки утилиты в ту папку, в которой будет ваш проект. Для этого сначала создайте папку и перейдите в неё:
mkdir new_project && cd new_project
Затем скачайте последнюю версию утилиты такой командой:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Установка Composer выполняется командой:
php ./composer-setup.php
После установки в директории появится файл Сomposer.phar, который и следует запускать для работы с утилитой. В Windows вы можете установить Composer только таким способом. Дальше в статье я буду считать, что утилита установлена глобально в системе, но дела это не меняет, просто будет отличаться имя исполняемого файла:
$ php ./composer.phar команды
Важно отметить, что для работы последней версии утилиты необходимо, чтобы в вашей системе была установлена версия PHP не ниже 7.0. Иначе утилита установится, но во время запуска будут выдаваться ошибки. Если вы используете панель управления, в которой есть несколько версий PHP, то нужно передать путь к утилите бинарному файлу PHP нужной версии, например:
$ /opt/php7.0/bin/php7.0 ./composer.phar команды
Путь к бинарному файлу будет отличаться в зависимости от способа установки PHP, панели и версии интерпретатора.
Версия утилиты, установленная из официального сайта, будет, как правило? намного свежее, чем из репозиториев:
php composer.phar -V
Чтобы удалить Composer, достаточно удалить его файлы из папки, куда он был установлен. Чтобы обновить Composer до последней версии, выполните:
php composer.phar self-update
Теперь пора переходить к примерам работы с Composer.
Как пользоваться Composer
1. Проект на основе пакета
Чаще всего вы будете разворачивать проекты Composer на основе уже существующих пакетов. В этом случае утилита берёт пакет из репозитория и просто распаковывает его в текущую папку, а все зависимости уже помещаются в папку vendor. Для этого используется команда create-project. Давайте создадим проект на основе пакета slim/slim4-skeleton:
composer create-project slim/slim-skeleton ./
Вторым параметром утилите надо передать папку, в которой будет развёрнут проект. В данном случае это текущая папка. После завершения установки вы получите уже развёрнутое приложение и можете начинать его модифицировать.
2. Установка пакетов
Для установки пакетов в Composer используется команда require. Утилита установит нужный пакет в подпапку vendor, добавит его в автозагрузку и в файл composer.json. Например, установим пакет illuminate/eloquent:
composer require illuminate/eloquent
Кроме того, composer позволяет устанавливать пакеты, которые будут доступны только для разработчика. Для этого используйте опцию --dev:
composer require --dev phpunit/phpunit
Бывают случаи, когда пакет не хочет устанавливаться из-за несовместимости с платформой. В первую очередь надо убедится, что все необходимые ему расширения PHP в системе установлены. Если же ваша консольная версия PHP использует другие расширения, а сам пакет будет использоваться только с веб-сервером, можно отключить проверку системных требований пакета с помощью опции --ignore-platform-reqs:
composer require --ignore-platform-reqs illuminate/eloquent
Ещё одна ошибка, которую вы можете получить - это не соответствие минимальной стабильности пакета. Например:
имя_пакета requires ещё_один_пакет -> satisfiable by точное_имя_этого_пакета but these conflict with your requirements or minimum-stability
Все пакеты Composer могут иметь два уровня стабильности:
- stable - стабильный;
- dev - находится в разработке.
Уровень стабильности пакета определяет его разработчик. Эта проблема решается чуть сложнее, надо поменять минимальный уровень стабильности для вашего проекта на dev. Откройте файл composer.json и под строчкой License добавьте следующую строчку:
vi composer.json
Или, если в файле уже есть строчка minimum-stability, необходимо заменить её значения со stable на dev. После этого вы сможете установить пакет composer, который вам необходим. Напоминаю, что все команды Сomposer аналогичны, даже если Сomposer на хостинге, а не на локальной машине или VPS-сервере, надо только указать верный путь к его исполняемому файлу.
3. Удаление пакетов
Чтобы удалить пакет, который вам больше не нужен, используйте опцию remove:
composer remove illuminate/eloquent
Аналогичным образом удаляется пакет для разработчиков:
composer remove --dev illuminate/eloquent
4. Обновление пакетов
Чтобы в ваших пакетах не было уязвимостей и старых проблем, необходимо регулярно их обновлять. Для этого используется команда update. Обратите внимание, что обновляются пакеты только в текущей директории, а не по всей системе, поэтому обновлять придётся каждый проект по отдельности:
composer update
И для пакетов разработчиков:
composer update --dev
5. Сброс автозагрузки
Бывает, что вы создали новый класс или установили пакет, но классы из него всё ещё не видны, и при попытке обратится к ним вы получаете ошибку. В таком случае следует обновить кэш автозагрузки Composer:
composer dump-autoload
После этой команды всё должно заработать. Если нет - пакет несовместимый или если это ваш класс, то он не соблюдает стандарт PSR-4.
6. Создание пакета
Теперь вы знаете, как использовать Composer, давайте немного поговорим о создании своих пакетов. Чтобы создать пустой проект в текущей папке, достаточно выполнить команду:
composer init
Утилита задаст несколько вопросов:
- Package name - имя нового пакета в формате: автор/имя;
- Description - описание;
- Author - автор пакета;
- Minimum Stability - стабильность пакета, можно выбрать dev или stable;
- Package Type - тип проекта, например: library, project, metapackage, composer-plugin;
- License - лицензия;
- Depencies - здесь вы можете интерактивно найти пакеты, от которых будет зависеть ваш проект.
На последнем шаге утилита предложит вам проверить, всё ли верно указано в конфигурационном файле:
После чего будет создан файл composer.json, и вы сможете установить нужные пакеты и добавлять свои исходные файлы. Я не буду писать здесь про автозагрузку PSR-4 и другие возможности composer.json, так, как это уже выходит за рамки обычного использования утилиты и больше касается разработки.
После того, как проект был создан, вы можете создать в папке проекта git-репозиторий и загрузить его на GitHub или другой сервис. Сразу же после этого ваш пакет можно будет установить с помощью Composer в любой другой проект, просто добавив его репозиторий.
7. Установка пакетов из сторонних репозиториев
Сначала нужно добавить ссылку на репозиторий в composer.json. Я предполагаю, что ваш репозиторий публичный, значит никаких ключей авторизации не понадобится:
vi composer.json
Например:
Секцию repositories надо добавлять на тот же уровень, что и license. и другие основные секции. Затем можно просто установить свой пакет:
composer require sergiy/selenium-chrome-library
После этого папка пакета появится в подпапке vendor, а его классы будут добавлены в автозагрузку.
Выводы
В этой статье мы разобрались, как пользоваться Composer для установки различных пакетов PHP, как обновлять эти пакеты, а также как создать свой пакет с программой и применять его в других своих проектах. Не может не радовать, что у PHP появился и увеличивается каталог библиотек, которые позволяют реализовать если не всё, то очень многое.