Как пользоваться Composer
Язык программирования PHP очень стремительно развивается. Ещё несколько лет назад огромным количеством библиотек на все случаи жизни мог похвастаться только Python. Однако сейчас уже разработано огромное количество библиотек для PHP, и все они доступны для установки буквально в несколько команд.
Для этого можно использовать пакетный менеджер composer. Утилита позволяет не только устанавливать сторонние пакеты, но и обновлять их при выходе новых версий, разрешать зависимости, а также очень легко создавать пакеты для своих библиотек. В этой статье мы рассмотрим, как пользоваться Composer для управления пакетами в PHP.
Синтаксис и опции Composer
Первое, что необходимо сказать, Composer — это консольная утилита, у неё нет графического интерфейса, однако это не делает её хуже. Вот её синтаксис:
$ composer опции команда
Опций у самой утилиты не так уж много. Давайте рассмотрим самые полезные:
- -h — вывести справку по утилите;
- -q — сокращённый вариант вывода;
- -V — показать версию утилиты;
- -n — не задавать интерактивных вопросов;
- -v, -vv,-vvv — настройка подробности вывода;
- -d — использовать указанную рабочую директорию.
Более интересны команды, которые вы будете постоянно использовать:
1. Что такое Composer, что у него внутри?
- 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
Затем скачайте последнюю версию утилиты такой командой:
Что такое composer и зачем он нужен?
php -r «copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);»
Установка Composer выполняется командой:
После установки в директории появится файл С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 могут иметь два уровня стабильности:
Уровень стабильности пакета определяет его разработчик. Эта проблема решается чуть сложнее, надо поменять минимальный уровень стабильности для вашего проекта на dev. Откройте файл composer.json и под строчкой License добавьте следующую строчку:
Или, если в файле уже есть строчка minimum-stability, необходимо заменить её значения со stable на dev. После этого вы сможете установить пакет composer, который вам необходим. Напоминаю, что все команды Сomposer аналогичны, даже если Сomposer на хостинге, а не на локальной машине или VPS-сервере, надо только указать верный путь к его исполняемому файлу.
3. Удаление пакетов
Чтобы удалить пакет, который вам больше не нужен, используйте опцию remove:
composer remove illuminate/eloquent
Аналогичным образом удаляется пакет для разработчиков:
composer remove —dev illuminate/eloquent
4. Обновление пакетов
Чтобы в ваших пакетах не было уязвимостей и старых проблем, необходимо регулярно их обновлять. Для этого используется команда update. Обратите внимание, что обновляются пакеты только в текущей директории, а не по всей системе, поэтому обновлять придётся каждый проект по отдельности:
И для пакетов разработчиков:
composer update —dev
5. Сброс автозагрузки
Бывает, что вы создали новый класс или установили пакет, но классы из него всё ещё не видны, и при попытке обратится к ним вы получаете ошибку. В таком случае следует обновить кэш автозагрузки Composer:
После этой команды всё должно заработать. Если нет — пакет несовместимый или если это ваш класс, то он не соблюдает стандарт PSR-4.
6. Создание пакета
Теперь вы знаете, как использовать Composer, давайте немного поговорим о создании своих пакетов. Чтобы создать пустой проект в текущей папке, достаточно выполнить команду:
Утилита задаст несколько вопросов:
- 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. Я предполагаю, что ваш репозиторий публичный, значит никаких ключей авторизации не понадобится:
«repositories»: [
«type»: «vcs»,
«url»: «ссылка на git репозиторий»
>
]
Секцию repositories надо добавлять на тот же уровень, что и license. и другие основные секции. Затем можно просто установить свой пакет:
composer require sergiy/selenium-chrome-library
После этого папка пакета появится в подпапке vendor, а его классы будут добавлены в автозагрузку.
Выводы
В этой статье мы разобрались, как пользоваться Composer для установки различных пакетов PHP, как обновлять эти пакеты, а также как создать свой пакет с программой и применять его в других своих проектах. Не может не радовать, что у PHP появился и увеличивается каталог библиотек, которые позволяют реализовать если не всё, то очень многое.
Источник: losst.pro
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
composer-doc-ru / 00-intro.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cannot retrieve contributors at this time
executable file 177 lines (126 sloc) 10.9 KB
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents Copy raw contents
Copy raw contents
Composer — это инструмент управления зависимостями в PHP. Он позволяет объявлять библиотеки, от которых зависит ваш проект, и будет управлять (устанавливать или обновлять) их.
Composer — это не менеджер пакетов, в том смысле, каким им являются Yum или Apt. Да, он работает с «пакетами» или библиотеками, но управляет ими, основываясь на каждый проект, устанавливая их в директорию (например, vendor ) внутри проекта. По умолчанию он не устанавливает пакеты глобально. Следовательно, это менеджер зависимостей. Однако для удобства поддерживается глобальная установка пакетов с помощью команды global.
Идея Composer не нова, на него большое влияние оказал npm из Node.js, а также bundler в экосистеме Ruby.
- У вас есть проект, который зависит от ряда библиотек.
- Некоторые из этих библиотек в свою очередь зависят от других библиотек.
Тут вступает в дело Composer, который:
- Позволяет объявлять библиотеки, от которых зависит ваш проект.
- Определяет, какие версии пакетов могут и должны быть установлены, а далее устанавливает их (т.е. загружает их в ваш проект).
Дополнительную информацию об объявлении зависимостей смотрите в главе «Основы использования».
Для запуска Composer требуется PHP 5.3.2+, вместе с этим потребуются некоторые важные настройки PHP и флаги компиляции, но при использовании установщика вы будете предупреждены о любых несовместимостей.
Для установки пакетов из исходных файлов вместо простых zip-архивов вам понадобится git, svn, fossil или hg в зависимости от того, какая система контроля версией используется для пакета.
Composer — кроссплатформенная утилита, и разработчики стремятся сделать, чтобы она хорошо работало в Windows, Linux и macOS.
Установка на Linux/Unix/macOS
Загрузка исполняемого композитора
Composer предлагает удобный установщик, который можно выполнить непосредственно из командной строки. Вы свободно можете скачать этот файл или просмотреть его код на GitHub, если хотите больше узнать о внутренней работе установщика. Исходный код — это код на обычным PHP.
Одним словом, существуют два способа установки Composer: локально в качестве части вашего проекта или глобально как исполняемый файл в пределах всей системы.
Для установки Composer локально, запустите установщик в директории проекта. Посетите страницу загрузки для получения инструкций.
Установщик проверит несколько настроек PHP, а затем загрузит composer.phar в текущий рабочую директорию. Данный файл представляет собой двоичный файл Composer. Это PHAR (PHP-архив), который является форматом архива для PHP, который, помимо прочего, можно запускать в в командной строке.
Теперь выполните в консоли php composer.phar для запуска Composer.
Вы можете установить Composer в конкретную директорию с помощью опцию —install-dir и также дополнительно назвать другим именем (переименовать) исполняемый файл, используя опцию —filename . При запуске установщика в соответствии с инструкциями на странице загрузки, добавьте следующие опции:
php composer-setup.php —install-dir=bin —filename=composer
Теперь выполните php bin/composer , чтобы запустить Composer.
Вы можете разместить PHAR с Composer в любом месте. Если вы поместите его в директорию, являющийся частью переменной окружения PATH , вы можете получить доступ к нему глобально. В UNIX-подобных системах вы может даже сделать его исполняемым и вызвать его без непосредственного использования интерпретатора php .
После запуска установщика следуйте инструкциям на странице загрузки, вы можете выполнить команду ниже для перемещения файла composer.phar в директорию, который находится в PATH :
mv composer.phar /usr/local/bin/composer
Если вы хотите установить его только для своего пользователя и избежать использования прав root-пользователя, вы можете установить в ~/.local/bin , который доступен по умолчанию на определенных дистрибутивах Linux.
Примечание: Если выполнение приведённой выше команды не удалось из-за недостаточных прав, возможно, потребуется выполнить её снова с использованием sudo.
Примечание: В некоторых версиях macOS директорию /usr по умолчанию не существует. Если вы получили сообщение об ошибке «/usr/local/bin/composer: No such file or directory», тогда вам следует вручную создать директорию перед продолжением: mkdir -p /usr/local/bin .
Примечание: Для получения информации по изменению PATH , прочитайте статью на Википедии и/или воспользуйтесь Google.
Теперь выполните composer вместо php composer.phar , чтобы запустить Composer.
Установка на Windows
Это самый простой способ установить Composer на компьютере, работающем под Windows.
Скачайте и запустите Composer-Setup.exe. Это действие установит последнюю версию Composer и настроит PATH таким образом, чтобы можно было выполнить composer из любой директории в командной строке.
Примечание: Закройте текущую сессию в терминале. Протестируйте правильность установить в новом терминале: это важно, поскольку PATH загружается только при запуске новой сессии терминала.
Перейдите в каталог на PATH и запустите программу установки, следуя инструкциям на странице загрузки, чтобы загрузить composer.phar.
Создайте новый файл composer.bat вместе с composer.phar:
Перейти в директорию, заданную в PATH и запустите установщик, следуя инструкциями на странице загрузки, чтобы скачать composer.phar .
Создайте файл composer.bat рядом с composer.phar :
Добавьте директорию в переменную окружения PATH , если она ещё там не указана. Информацию про изменение переменной PATH смотрите в этой статье и/или воспользуйтесь Google.
Закройте текущую сессию в терминале. Протестируйте правильность установки Composer, выполнив команду в новой сессии терминала:
C:Usersusername>composer -V Composer version 1.0.0 2016-01-10 20:34:53
Теперь, когда вы установили Composer, вы готовы использовать его! Переходите к следующей главе для получения краткой и простой демонстрации работы.
Источник: github.com
Composer для самых маленьких
Когда я первый раз разбирался с composer, я набросал для себя маленькую шпаргалку и теперь, спустя некоторое время представляю её на суд общественности в несколько доработанном виде.
Данная публикация актуальная для тех, кто в первый раз столкнулся с незаменимым менеджером пакетов для PHP.
Итак, Composer — менеджер пакетов для PHP.
Для чего нужен Composer и простейший пример его использования
Возьмем для примера этот проект
Если в двух словах: то это набор скриптов для работы в VK API
Соответственно, для работы этих скриптов нужно несколько библиотек
Библиотеки перечислены в файле composer.json — ключевой файл при работе с composer
В этом проекте используется 5 библиотек. Соответственно, если разработчик решит опубликовать этот проект на github, то ему достаточно закинуть в репу саму папку со скриптами и составить composer.json, в котором будут описаны библиотеки, необходимые для работы этого проекта. Простота очевидна: в репу не нужно вслед за файлами прицепом тащить все нужные библиотеки. Занимает меньше места, проще распространять проект.
В папке scripts лежат непосредственно скрипты проекта, для работы которых и требуются эти 5 пакетов.
Запускаем установку пакетов:
После установки появляется папка vendor, куда складываются установленные пакеты и формируется файл autoload.php
Этот файл подключаем к проекту и всё — библиотеки подключены, можно спокойно с ними работать.
Простота очевидна: не нужно скачивать и подключать библиотеки и их зависимости самостоятельно, composer всё сделает за Вас. И вся эта пачка подключается одним единственным файлом autoload.php
Все пакеты, которые лежат в vendor, добавляются в автозагрузчик. При этом composer опирается на файлы composer.json, которые должны быть у каждого пакета. Формирование composer.json пакета — это задача разработчика пакета, от потребителя пакета требуется лишь описать в composer.json проекта, какие пакеты нужно подключить.
Это пример composer.json проекта:
Это пример composer.json пакета:
В секции require прописана зависимость этого пакета — библиотека guzzle http, необходимая для работы библиотеки getjump/vk. В данном случае, т.е. с точки зрения потребителя пакетов, всевозможные зависимости пакетов — это не наша «забота», с зависимостями composer разберётся сам.
Пространство имён пакета прописано в секции autoload
getjump\Vk\ — наименование пространства имён
src/getjump/Vk/ — директория, в которой лежат файлы с классами пакета
Работа с этой библиотекой в проекте:
Core и Friends — это классы библиотеки, которые разложены и прописаны в папке src в соответствии со стандартом PSR-4. Опять же формирование структуры пакета — это работа создателя пакета.
Нам, как потребителю пакета, достаточно прописать в наш проект
include ‘../vendor/autoload.php’;
и все эти классы и пространства имён будут отлично работать.
При этом нам не нужно заморачиваться и писать автозагрузчик. Composer это сделает сам при выполнении команды install.
Установка
Установка Composer глобально
1) Для начала нужно что бы путь к директории с интерпретатором PHP был прописан в переменной окружения path.
Проверим, так ли это:
php –version
Если вывод получился типа такого, то этот шаг можно пропустить
На примере Windows 7
Система -> Дополнительные параметры системы -> Дополнительно -> Переменные среды
Далее нас будет интересовать переменная path:
Вписываем путь к интерпретатору
*С давних времён у меня на компьютере лежит сборка xampp, сама сборка здесь нафиг не нужна, а вот интерпретатор с неё вполне подойдёт (версия PHP – 5.6).
2) Перезапускаем терминал.
Создаём директорию и ставим composer (я ставил на диск D)
D:
cd /
mkdir bin
cd bin
php -r «readfile(‘https://getcomposer.org/installer’);» | php
echo php «%~dp0composer.phar» %*>composer.bat
3) Добавим в переменную окружения path путь к composer.bat, например для D:bin должно получиться:
Дополнительно можно добавить в path
D:Users%userName%AppDataRoamingComposervendorbin
для того, что-бы было удобнее использовать инструменты, глобально установленные через Composer.
(У меня папка Users располагается на диске D, а на C создан симлинк на неё).
Всё, composer установлен и полностью готов к работе.
Ещё: при установке можно словить ошибку
[RuntimeException]
The APPDATA or COMPOSER_HOME environment variable must be set for composer to run correctly
Решение нашлось здесь github.com/composer/composer/issues/2033
Добавляем переменную APPDATA со значением D:UsersGSUAppDataRoaming
Установка Composer локально
Есть вариант ещё поставить composer локально, но в большинстве случаев в этом нет явной необходимости.
Однако тут установка ещё проще.
Т.к. программа глобально не установлена, нужен загрузочный файл(мини-программа composer), для его загрузки пишем команду:
php -r «readfile(‘https://getcomposer.org/installer’);» | php
теперь в директории проекта появился файл composer.phar
Всё, можно использовать.
php composer.phar require [название пакета]
Отличия глобальной и локальной установки
Команды запускаются по разному при локальной и глобальной установках:
Например:
Локально: php composer.phar require silex/silex ~1.1
Глобально: composer require silex/silex ~1.1
При локальной установке нужно каждый раз скачивать установочный файл в папку текущего проекта
php -r «readfile(‘https://getcomposer.org/installer’);» | php
При глобальной установке этот файл не нужен. Composer запускается при любой текущей директории.
Команды
install — установка пакетов, прописанных в composer.json
update – обновление пакетов
dumpautoload — пересборка автозагрузчика
require somepackage/somepackage:someversion — добавление нового пакета (по умолчанию пакеты ставятся из оф. репозитория). При установке пакет прописывается в composer.json
update —lock — обновление файла блокировки composer.lock
config —global cache-files-maxsize «2048MiB» — пример изменения параметра конфигурации
—profile — добавление этого параметра к любой команде включит показ времени выполнения и объёма использованной памяти
—verbose — подробная инфомация о выполняемой операции
show —installed — список установленных пакетов с описанием каждого
show —platform — сведения о PHP
—dry-run — репетиция выполнения команды. Может добавляться к командам install и update. Эмулирует выполнение команды без её непосредственного выполнения. Необходим для того, чтобы проверить пройдёт ли установка пакетов и зависимостей успешно.
remove — удаление пакета. Точная противоположность require
Синтаксис composer.json
Именование пакетов и варианты описания пакетов
Имя пакета состоит из двух частей разделёных косой чертой: названия поставщика (vendor name) и названия библиотеки.
Если пакет оформлен в соответствии со стандартом PSR-4, но опубликован не на packagist.org, а на github, то вместо версии пакета нужно прописать ветку и репозиторий для этого пакета:
Пример подключения библиотеки, которая лежит на github, но при этом не оформлена по стандарту PSR-4, а представляет из себя обыкновенное нагромождение файлов с классами и функциями.
Pqr/superlib — эта та самая «неправильная» библиотека.
В секции repositories для неё пишем такую конструкцию
Ключевой момент — секция autoload, здесь указываем нужные нам файлы с классами и функциями.
Структура библиотеки:
Соответственно в проекте вызов getCurrentTime() будет выглядеть примерно так:
$timer = new pqrsuperlibTimerClass;
echo $timer->getCurrentTime();
Версионирование
При указании допустимых версий пакетов можно использовать точное соответствие (1.2.3), диапазоны с операторами сравнения (<1.2.3), комбинации этих операторов (>1.2.3 <1.3), “последняя доступная” (1.2.*), символ тильды (~1.2.3) и знак вставки (^1.2.3).
Указание тильды (~1.2.3) будет включать в себя все версии до 1.3 (не включительно), так как в семантическом версионировании это является моментом внедрения новых функциональных возможностей. В данном случае будет получена последняя из стабильных минорных версий. Т.е. будет меняться только последняя цифра — 1.2.5, 1.2.8 и тд.
Указание знака вставки (^1.2.3) буквально означает “опасаться только критических изменений” и будет включать в себя версии вплоть до 2.0. Применительно к семантическому версионированию, изменение мажорной версии является моментом внесения в проект критических изменений, так что версии 1.3, 1.4 и 1.9 подходят, в то время как 2.0 — уже нет.
Т.е. не меняется только первая цифра.
Тильда: ~1.2.3 — это самый распространённый и безопасный способ указания версии.
Файл composer.lock
Файл composer.lock сохраняет текущий список установленных зависимостей и их версии. Таким образом, на момент, когда версии зависимостей уже будут обновлены (команда update), другие люди, которые будут клонировать ваш проект, получат те же самые версии. Это позволяет убедиться в том, что каждый, кто получает ваш проект, имеет пакетное окружение, идентичное тому, которое вы использовали при разработке, и помогает избежать ошибок, которые могли бы возникнуть из-за обновления версий.
При каждом выполнении команды update версии обновлённый пакетов прописываются в composer.lock. Этот файл загоняется под систему контроля версий и при установке пакетов на новом сервере поставятся именно те версии пакетов, которые прописаны в этом файле. При выполнении команды install composer будет в первую очередь опираться на composer.lock. Таким образом на разных серверах будет гарантированно установлено одинаковое пакетное окружение с точки зрения версий.
Также, файл composer.lock содержит хэш файла composer.json.
И если json файл был отредактирован, то composer выдаст предупреждение, что файл lock не соответствует json файлу.
В таком случае, нужно выполнить команду composer update —lock, которая обновит composer.lock.
Отличие install от update в контексте использования composer.lock
Команда composer install делает следующее:
Проверяет существует ли composer.lock:
— если нет, резолвит зависимости и создаёт его
— если composer.lock существует, устанавливает версии, указанные в нём
Команда composer update:
— Проверяет composer.json
— Определяет последние версии на основе указанных в этом файле
— Устанавливает последние версии
— Обновляет composer.lock в соответствии с установленными
Пример использования с точки зрения создателя проекта
Имеется проект без установленных пакетов
Поставили несколько библиотек
У нас сформировался composer.json с информацией о пакетах
Мы можем его дополнить и распространять проект с этим файлом
Другой пользователь скачал наш проект, выполнил install и у него в проекте развернулись все нужные пакеты
Пример использования с точки зрения создателя пакета
Для примера я создал класс с методом, который будет выводить URL текущей страницы
Класс оформлен как пакет и залит на github.
Регистрируюсь на оф. репозитории и добавляю пакет, указывая ссылку на репозиторий, в котором он лежит
Всё, пакет добавлен
Проверяю работоспособность пакета
Пакет поставился, вот наш класс:
Composer и PhpStorm
Конфигурирование возможности редактирования Composer пакетов
Если опция выставлена, то нельзя будет так просто взять и отредактировать файлы внутри vendor/*/*
Нюансы, тонкости, сложные ситуации
Ошибка: Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them. Nothing to install or update
Решение: composer update —lock
Долго выполняется update при большом числе установленных библиотек
Composer проверяет все зависимости пакетов, а если пакетов много — то это надолго.
Решение: если нужно обновить только одну библиотеку, то указываем её явно:
composer update package/name
Ещё можно добавлять параметр «—prefer-dist» (хотя, по идее, он должен быть включён по умолчанию), тогда composer будет стараться ставить библиотеку из zip-архива, а не клонировать репозиторий.
The «****.json» file could not be downloaded: failed to open stream: HTTP request failed!
Composer пытается дергануть пакет по HTTP, хотя нужно по HTTPS
Решение: composer config —global repo.packagist composer packagist.org
The package is not available in a stable-enough version according to your minimum-stability setting
see for more details.
Стабильной версии у пакета нет, а установка dev версии не разрешена в конфиге.
Решение: либо выставить параметр «minimum-stability»: «dev» и «prefer-stable»: true, чтобы ставить по возможности стабильные версии, либо — если это ваш собственный пакет — создать тег с версией (стикер stable в readme на github должен показывать версию)
История развития и ключевые изменения
— первый релиз состоялся 1 марта 2012 и весь 2012 инструмент активно развивается
— январь 2014 — реализована автозагрузка на основе PSR-4
— март 2016 — вышла в свет бета-версия (1.0.0-beta1). Добавлены команды show —tree для отображения установленных пакетов в виде дерева, why-not — показывает почему нельзя уставить пакет, update —interactive — позволяет выбрать какие пакеты обновлять, а также множество других улучшений и исправлений.
— 4 апрель 2016 — был представлен первый стабильный релиз Composer — 1.0.0
Декабрь 2014 — один из ключевых коммитов в репозиторий composer
github.com/composer/composer/commit/ac676f47f7bbc619678a29deae097b6b0710b799
Суть изменения — отключён сборщик мусора
Ссылки
Офсайт: getcomposer.org
Официальный репозиторий пакетов: packagist.org
Репозиторий composer: github.com/composer/composer
Отличный большой туториал по использованию Composer: daylerees.com/composer-primer
Список команд и подробный пример файла composer.json: composer.json.jolicode.com
Источник: habr.com
Документация Composer. Введение.
Информация о материале Родительская категория: Программы для автоматизации работы Категория: Composer Просмотров: 323
- Введение
- Управление зависимостями в Composer
- Системные требования к Composer
- Установка Composer под Linux / Unix / macOS
- Загрузка исполняемого файла Composer
- Локальная установка Composer
- Глобальная установка Composer
- Использование программы установки Composer для Windows
- Ручная установка Composer под Windows
Введение.
Composer — это инструмент для управления зависимостями в PHP. Он позволяет задать библиотеки, от которых зависит ваш проект, и будет управлять ими (устанавливать/обновлять) за вас.
Управление зависимостями в Composer.
Composer не является менеджером пакетов в том же смысле, что и Yum или Apt. Да, он работает с «пакетами» или библиотеками, но он управляет ими на основе отдельного проекта, устанавливая их в каталог (например, vendor ) внутри этого проекта. По умолчанию он не устанавливает ничего глобально. Таким образом, это менеджер зависимостей. Однако для удобства он позволяет создать «глобальный» проект с помощью команды global.
Эта идея не нова, и Composer в значительной степени опирается на идеи node npm и ruby bundler.
- У вас есть проект, который зависит от ряда библиотек.
- Некоторые из этих библиотек зависят от других библиотек.
- Позволяет объявить библиотеки, от которых зависит проект.
- Выясняет, какие версии каких пакетов могут и должны быть установлены, и устанавливает их (то есть загружает их в данный проект).
- Вы можете обновить все зависимости одной командой.
Подробнее об объявлении зависимостей см. в главе «Базовое использование».
Системные требования к Composer.
Для работы Composer в его последней версии требуется PHP 7.2.5. Версия с долгосрочной поддержкой (2.2.x) все еще предлагает поддержку PHP 5.3.2+ на случай, если вы застряли с устаревшей версией PHP. Также требуется несколько важных настроек php и флагов компиляции, но при использовании программы установки вы будете предупреждены о любых несовместимостях.
Для установки пакетов из исходных текстов, а не простых zip-архивов, вам понадобится git, svn, fossil или hg, в зависимости от способа управления версиями пакета.
Composer является мультиплатформенным, и поэтому его разработчики стремятся к тому, чтобы он одинаково хорошо работал на Windows, Linux и macOS.
Установка Composer под Linux / Unix / macOS.
Загрузка исполняемого файла Composer.
Composer предлагает удобную программу установки, которую можно запустить прямо из командной строки. Можете скачать этот файл или просмотреть его на GitHub, если хотите узнать больше о внутренней работе программы установки. Исходным кодом является простой PHP.
Вкратце, есть два способа установки Composer. Локально, как часть вашего проекта, или глобально, как системный исполняемый файл.
Локальная установка Composer.
Чтобы установить Composer локально, запустите программу установки в каталоге вашего проекта. Инструкции см. на странице «Загрузка».
Программа установки проверит некоторые настройки PHP, а затем загрузит composer.phar в рабочий каталог проекта. Этот файл является бинарным файлом Composer. Это PHAR (архив PHP), который представляет собой формат архива для PHP, который, помимо прочего, можно запускать из командной строки.
Теперь запустите php composer.phar , чтобы запустить Composer.
Можно установить Composer в определенный каталог с помощью команды —install-dir и дополнительно (переименовать) его с помощью команды —filename . При запуске программы установки, следуя инструкциям на странице загрузки, добавьте следующие параметры:
php composer-setup.php —install-dir=bin —filename=composer
Затем запустите php bin/composer , чтобы запустить Composer.
Глобальная установка Composer.
Файлы Composer PHAR можно размещать где угодно. Если поместить его в каталог, который является частью PATH , то можно получить к нему глобальный доступ. На Unix-системах его можно даже сделать исполняемым и вызывать без прямого использования интерпретатора php .
После запуска программы установки, следуя инструкциям на странице загрузки, вы можете выполнить следующее действие, чтобы переместить composer.phar в каталог, который находится в вашем PATH:
mv composer.phar /usr/local/bin/composer
Если вы хотите установить его только для конкретного пользователя и не требовать прав root, можно использовать ~/.local/bin , который доступен по умолчанию в некоторых дистрибутивах Linux.
Примечание: Если вышеописанная команда не работает из-за прав доступа, вам может потребоваться запустить ее снова с правами sudo .
Примечание: В некоторых версиях macOS каталог /usr по умолчанию не существует. Если возникает ошибка «/usr/local/bin/composer: No such file or directory», то перед продолжением работы необходимо создать каталог вручную: mkdir -p /usr/local/bin .
Примечание: Для получения информации об изменении PATH, пожалуйста, прочитайте статью в Википедии и/или воспользуйтесь поиском в Интернете.
Теперь запустите composer , чтобы запустить Composer вместо php composer.phar .
Установка под Windows.
Использование программы установки Composer для Windows.
Это самый простой способ установить Composer на вашем компьютере.
Скачайте и запустите файл Composer-Setup.exe. Он установит последнюю версию Composer и настроит ваш PATH так, что вы сможете вызывать composer из любого каталога в командной строке.
Примечание: Закройте существующий терминал. Проверьте работу с новым терминалом: Это важно, поскольку PATH загружается только при запуске терминала.
Ручная установка Composer под Windows.
Перейдите в каталог PATH и запустите программу установки, следуя инструкциям на странице загрузки, чтобы загрузить файл composer.phar .
Создайте новый файл composer.bat рядом с composer.phar :
Используя cmd.exe:
Используя Powerbash:
Если каталога еще нет, добавьте его в переменную окружения PATH. Информацию об изменении переменной PATH можно найти в этой статье и/или в Интернете с помощью выбранной вами поисковой системы.
Закройте текущий терминал. Проверьте использование в новом терминале:
C:Usersusername>composer -V
Composer version 2.4.0 2022-08-16 16:10:48
Образ Composer в Docker.
Composer доступен как контейнер Docker в нескольких местах, см. список в composer/docker README.
docker pull composer/composer docker run —rm -it -v «$(pwd):/app» composer/composer install
Чтобы добавить Composer в существующий Dockerfile, можно просто скопировать бинарный файл из pre-built, low-size образов:
# Последний релиз COPY —from=composer/composer:latest-bin /composer /usr/bin/composer # Конкретный релиз COPY —from=composer/composer:2-bin /composer /usr/bin/composer
Для получения дополнительной информации об использовании читайте описание образа.
Примечание: Вопросы, специфичные для Docker, следует отправлять в репозиторий composer/docker.
Примечание: Вместо composer/composer можно также использовать composer в качестве названия образа. Он короче и является официальным образом Docker, но не публикуется напрямую разработчиками Composer и поэтому обычно получает новые релизы с задержкой в несколько дней.
Важно: у образов short-aliased нет эквивалентов binary-only, поэтому для подхода COPY —from лучше использовать composer/composer .
Использование Composer.
Теперь, когда вы установили Composer, вы готовы к его использованию! Перейдите к следующей главе для короткой демонстрации.
Перевод с английского официальной документации Composer:
https://getcomposer.org/doc/00-intro.md
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Выберите, то, чем пользуетесь чаще всего:
Источник: mb4.ru