Сегодня я узнал, что такое composer и как его юзать!
Composer (getcomposer.org) — это относительно новый и уже достаточно популярный менеджер зависимостей для PHP. Вы можете описать от каких библиотек зависит ваш проект и Composer установит нужные библиотеки за вас! Причём Composer — это не менеджер пакетов в классическом понимании. Да, он оперирует с сущностями, которые мы будем называть «пакетами» или библиотеками, но устанавливаются они внутрь каждого проекта отдельно, а не глобально (это одно из основных отличий от старого-доброго PEAR).
Кратко, как это работает:
1) У вас есть проект, который зависит от нескольких библиотек.
2) Некоторые из этих библиотек зависят от других библиотек.
3) Вы описываете в своём проекте те библиотеки, от которых непосредственно зависит ваш код.
4) Composer находит нужные версии требуемых библиотек для всего проекта, скачивает их и устанавливает в папку вашего проекта.
При создании Composer авторы черпали идеи и вдохновение из аналогичных проектов: npm для Node.js и Bundler для Ruby.
Проект написан на PHP 5.3, распространяется под лицензией MIT и доступен на http://github.com/composer.
Что умеет Composer?
1) Скачивать пакеты и их зависимости;
2) по умолчанию, пакеты скачиваются из официального репозитория packagist.org. Любой человек может свободно добавить туда свой пакет, чтобы сделать его установку максимально лёгкой и удобной для всего мира;
3) пакеты можно скачивать не только с packagist.org, но и из любого git, mercurial или svn репозитория;
4) при скачивании пакетов с github.com или bitbucket.org не требуется установленной системы контроля версий (git или hg), Composer работает через API этих сайтов;
5) git/hg/svn репозиторий с пакетом может находиться не только на одном из перечисленных выше сайтов, но в любом другом месте, например, в локальной сети предприятия или вообще на локальном жестком диске;
6) кроме того, устанавливаемая библиотека не обязательно должна быть оформлена в виде Composer-пакета, вы можете сделать установку из любого git/hg/svn репозитория произвольной структуры;
7) наконец, устанавливаемый пакет не обязательно должен быть git/hg/svn репозиторием, это может быть произвольный zip файл доступный по любому uri!
8) все пакеты устанавливаются в текущую директорию (откуда была выполнена команда install), это позволяет иметь несколько различных версий библиотек при работе над разными проектами параллельно;
9) команда update обновляет все установленные (или установит заново случайно удалённые) пакеты до свежих версий. А может и не обновлять версии до самых свежих, если создать специальный composer.lock файл — это позволяет зафиксировать комбинацию из стабильных версий всех используемых в проекте библиотек;
10) после установки пакетов автоматически генерируется autoload.php, с помощью которого можно подключить установленные библиотеки в коде вашего проекта. При подготовке Composer-пакета рекомендуется использовать PSR-0 — стандарт расположения и именования php файлов, чтобы autoload смог их легко найти. В любом случае, автор пакета может описать правила, по которым autoload будет искать файлы тех или иных классов или неймспейсов. Если вы устанавливаете библиотеку, которая не оформлена как Composer-пакет (например, произвольный git репозиторий с github), то задача описания правил autoload ложится на ваши плечи. Так что никакой магии с генерируемым autoload.php нет — он умеет загружать всё (даже библиотеки с набором функций вне классов), главное, чтобы были описаны правила (автором библиотеки или вами).
Как же заюзать этот composer? Одна статья в интернете подмогла: ( https://habr.com/post/145946/ ).
1) нужно закачать себе файл компосера в корневую папку сайта:
через SSH я сделал это командой: php -r «readfile(‘https://getcomposer.org/installer’);» | php
при этом текущей была — корневая папка сайта.
composer.phar — (архив php) — это и есть собственно скрипт самого composera
2) там же в корне сайта нужно создать файл установок : composer.json
в нем надо указать инфу о том, что должно быть установлено:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
{ "require":{ "php":">=5.3.0", "silex/silex":"dev-master", "twig/twig":">=1.8,<2.0-dev", "mycompany/superlogger":"dev-master", "pqr/superlib":"1.2.3" }, "repositories":[ { "type":"git", "url":"http://github.com/pqr/superlogger" }, { "type":"package", "package":{ "name":"pqr/superlib", "version":"1.2.3", "source":{ "type":"git", "url":"http://github.com/pqr/superlib", "reference":"master" }, "autoload":{ "classmap":["timer.php"], "files":["lib_functions.php"] } } } ] } |
3) далее надо запусть установку, через SSH: php composer.phar install (находясь в корне сайта)
4) В случае успеха все библиотеки php-кода будут добавлены в папку /vendor/ в корне сайта. А composer создаст файл autoload.php в этой папке.
5) И для того чтобы все стало подключено в нужном файле (например index.php) нужно подключить этот autoload.php файл:
1 2 3 |
<? require $_SERVER['DOCUMENT_ROOT']."/vendor/autoload.php"; ?> |
6) Далее можно юзать установленные библиотеки.