Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 Composer.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
29 Кб
Скачать
☆

Подключаем пакеты с сайта packagist.Org

{

"require": {

"php":">=5.3.0",

"silex/silex":"dev-master",

"twig/twig":">=1.8,<2.0-dev"

}

}

Здесь я описал зависимость проекта от PHP версии 5.3.0 и выше, от silex (микрофреймворк) и от twig (шаблонизатор). Silex и Twig доступны в виде Composer-пакетов на сайте packagist.org, поэтому дополнительных настроек не требуют. Замечу, что Silex в свою очередь зависит ещё от нескольких пакетов — все они будут скачены и установлены автоматически. Имя пакета состоит из двух частей разделёных косой чертой: названия поставщика (vendor name) и названия библиотеки. Названием поставщика зачастую является ник автора или имя компании. Иногда, название поставщика совпадает с именем самой библиотеки или фреймворка. Для каждого пакета обязательно нужно указать номер версии. Это может быть бранч в репозитории, например, «dev-master» — приставка dev сигнализирует, что это имя бранча, а сам бранч соответсвенно называется «master». Для mercurial репозитория аналогичная запись будет выглядеть как «dev-default». В качестве номера версии можно указать и более сложные правила, используя операторы сравнения. Кстати, если вы скачиваете код из удалённого репозитория, то Composer сканирует теги и имена веток в этом репозитории на предмет чего-то похожего на номера версий, например тег «v1.2.3» будет использован как указатель на версию 1.2.3.

Подключаем на собственный Compsoer-пакет

Далее, подключим наш собственный пакет SuperLogger, который правильно оформлен, но опубликован не на packagist.org, а на github:

{

"require": {

"php":">=5.3.0",

"silex/silex":"dev-master",

"twig/twig":">=1.8,<2.0-dev",

"mycompany/superlogger":"dev-master"

},

"repositories":[

{

"type":"git",

"url":"http://github.com/pqr/superlogger"

}

]

}

Чтобы Composer знал где искать пакет «mycompany/superlogger», мы добавили массив repositories со ссылкой на соотвествующий github репозиторий. Обратим внимание, что записи в массиве repositories напрямую никак не связаны с блоком require — между пакетами и репозиториями не указано соответствие. На сколько я понял, Composer ищет все требуемые пакеты во всех указанных репозиториях (в т.ч. на сайте packagist.org) и скачивает найденные совпадения по каким-то внутренним приоритетам. Более глубоко я в этом моменте ещё не разбирался, поправьте меня, если кто-то знает детали.

Подключаем произвольный git репозиторий

Теперь подключим нашу легаси-библиотеку superlib, которая лежит на github, но не является оформленным Composer-пакетом, т.к. она очень старая.

{

"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"]

}

}

}

]

}

В массив repositories добавился объект, который целиком описывает пакет pqr/superlib. По сути, это то описание, которое должен был бы сделать автор библиотеки и положить его внутри своего репозитория. Но по условиям задачи, superlib не является оформленным Composer-пакетом, поэтому нам пришлось создать его описание в рамках Super Hello World проекта. Аналогичным образом можно подключить любую другую библиотеку, в т.ч. простой zip файл.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]