
Kohana 3: используем Composer(менеджер пакетов для проекта)
Что такое Composer?
Composer (getcomposer.org) — это относительно новый и уже достаточно популярный менеджер зависимостей для PHP. Вы можете описать от каких библиотек зависит ваш проект и Composer установит нужные библиотеки за вас! Причём Composer — это не менеджер пакетов в классическом понимании. Да, он оперирует с сущностями, которые мы будем называть «пакетами» или библиотеками, но устанавливаются они внутрь каждого проекта отдельно, а не глобально (это одно из основных отличий от старого-доброго PEAR).
Кратко, как это работает:
У вас есть проект, который зависит от нескольких библиотек.
Некоторые из этих библиотек зависят от других библиотек.
Вы описываете в своём проекте те библиотеки, от которых непосредственно зависит ваш код.
Composer находит нужные версии требуемых библиотек для всего проекта, скачивает их и устанавливает в папку вашего проекта.
При создании Composer авторы черпали идеи и вдохновение из аналогичных проектов: npm для Node.js и Bundler для Ruby.
Так нам об этом говорит Хабр
Composer и Kohana 3
Composer включен в Kohana 3 по умолчанию, использовать его легко и просто.
Ищем нужный нам пакет в репозитории.
Нашли? Открыли? В описании мы видим графу require: "massivescale/celery-php": "dev-master"
Дальше в корне проекта выполняем:
php composer.phar require massivescale/celery-php
После этого composer спросит версию репозитория с которого тянуть файлы, вписываем ему dev-master и жмем Ввод. Выглядит это так:
Please provide a version constraint for the massivescale/celery-php requirement: dev-master
Дожидаемся сообщения.
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing videlalvaro/php-amqplib (v2.2.6)
Downloading: 100%
- Installing massivescale/celery-php (dev-master df7be31)
Cloning df7be316f47bf6f812f08e2142f40da5ef39a041
Writing lock file
Generating autoload files
Которое означает что пакет был добавлен в папку vendor. В ту же папку Composer скачает все пакеты от которых зависит скачиваемый вами пакет.
Так же может быть что Composer выдаст сообщение требующее обновление его самого:
This dev build of composer is outdated, please run "composer.phar self-update" to get the latest version.
Так и делаем:
php composer.phar self-update
Но это немного не все. Чтобы включить Autoloader в Kohana 3 и использовать библиотеки нужно добавить строку в bootstrap.php:
require(DOCROOT.'vendor/autoload.php');
Добавляем его до загрузки модулей.
Автоподгрузка классов Composer уже встроена в Kohana 3, по этому кроме добавления выше указанной строки других сложностей в использовании пакетов не возникает:
$c = new Celery('localhost', 'myuser', 'mypass', 'myvhost');
$result = $c->PostTask('tasks.add', array(2,2));
Все остальное по аналогии.