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

Подключаем простой zip файл

Например, вот как могло бы выглядеть описание зависимости от шаблонизатора Smarty, распространяемого в виде zip файла с исходниками в svn:

{

"repositories":[

{

"type":"package",

"package":{

"name":"smarty/smarty",

"version":"3.1.7",

"dist":{

"url":"http://www.smarty.net/files/Smarty-3.1.7.zip",

"type":"zip"

},

"source":{

"url":"http://smarty-php.googlecode.com/svn/",

"type":"svn",

"reference":"tags/Smarty_3_1_7/distribution/"

}

}

}

],

"require":{

"smarty/smarty":"3.1.*"

}

}

Инстукция autoload

Вернёмся к нашему проекту. Описывая «pqr/superlib», мы добавили инструкцию autoload. В ней указан файл timer.php, в котором будущий автозагрузчик будет искать классы и указали файл с функциями lib_functions.php — он будет принудительно подключаться в начале autoload.php. Итак, наш проект состоит из:

  • в корне лежит файл composer.json;

  • в корне находятся директории web и views;

  • внутри директории web лежит файл с «бизнес-логикой» нашего приложения: index.php;

  • внутри директории views лежит файл шаблона layout.twig;

  • дополнительно, в папку web я положил .htaccess (для apache) и web.config (для IIS 7.5) с правилами mod_rewrite/url rewriter — непосредсвенно к настройке Composer они отношения не имеют.

Всё готово к запуску.

Запускаем composer install

php composer.phar install

Composer клонирует репозитории и распаковывает их на нужной версии в директорию vendor, которую он сам создаёт в корне проекта. После распаковки, в директории vendor мы найдём:

  • файл autoload.php

  • служебные директории .composer и composer

  • pimple — пакет, который подтянулся вместе с микрофреймворком Silex

  • silex — сам микрофреймворк, его мы явным образом затребовали при описании зависимостей

  • symfony — некоторые компоненты из Symfony 2, которые требуются для работы Silex

  • twig — шаблонизатор, который мы также явно запросили

  • mycompany — внутри этой директории будет находиться репозиторий superlogger скаченный с github

  • pqr — внутри этой директории будет находиться репозиторий superlib, также скаченный с github

Остаётся только подключить autoload.php в начале файла web/index.php (require "../vendor/autoload.php") и все библиотеки и функции будут доступны!

Как создать собственный Composer пакет?

В этом проекте мы использовали Composer с точки зрения потребителя библиотек. А как самому создать Composer пакет, чтобы любой другой человек смог им воспользоваться? На самом деле, один из таких пакетов я создал, когда подготавливал примеры для этой статьи. В корне репозитория superlogger лежит файл composer.json похожей структуры, который описывает сам пакет и его зависимости (в случае с superlogger зависимостей нет). Другие примеры: репозитории silex и twig, которые скачались в папку vendor — все они имеют файл composer.json в корне — смотрите, изучайте! И, конечно, не забывайте про документацию на официальном сайте getcomposer.org/doc/.

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