Composer — это относительно новый и уже достаточно популярный менеджер зависимостей для PHP. Ты можешь описать, от каких библиотек зависит твой проект, и Composer установит нужные библиотеки за вас! Причём Composer — это не менеджер пакетов в классическом понимании. Да, он оперирует с сущностями, которые мы будем называть "пакетами" или библиотеками, но устанавливаются они внутрь каждого проекта отдельно, а не глобально (это одно из основных отличий от старого-доброго PEAR).
Подробнее на Хабре
Установка
Следуйте инструкциям на официальной странице.
Использование
Для скачивания кода нужных библиотек нам понадобится файл
composer.json
. Примеры такого файла можно посмотреть на хабре или у меня в блоге (чуть позже я выставлю пример для PayPal API SDK PHP, для которой я и пишу эту статью).В папке с этим файлом выполняем команду
composer update
, но в Ubuntu может понадобится видоизменить команду до такой: ~/composer.phar update
.Это скачает все, что тебе необходимо. Теперь все, что тебе нужно, находится в папках
lib/
, и vendor/
.Несовместимости версий PHP
Следите, чтобы на сервере и у вас на локальной машине были максимально похожие версии PHP, чтоб достаточно было перекинуть эти две папки на сервер.
Несовместимость с PHP 5.2
Composer в большинстве случаев использует "инструмент"
namespace
для управления конфликтами. Но эта фича появилась только в PHP 5.3 и в предыдущих версиях никоим образом не реализована.Если у тебя продакшен-сервер на базе PHP 5.2 и ниже, тебе крупно не повезло - придется переписывать SDK, или... исправлять несовместимые моменты.
Основные принципы следующие:
- Избавиться от ключевых слов
namespace
во всех файлах проекта. Я на bash просто написал скрипт, который заменяет это слово на//namespace
, т.е. закомментировал его. На этом этапе проследите, чтоб в разных библиотеках не повторялись названия классов. Если это случится - переименовать по всем библиотекам во избежание конфликтов. - Избавиться от ключевых слов
use
аналогичным образом - закомментировать. - Вместо
use
в PHP 5.2 используемrequire_once('путь к файлу php с классом')
, но особым образом: все файлы должны подключаться в том порядке, в каком они будут вызываться кодом. Если в классе A используется класс B, то необходимо проследить, чтоб класс B был подключен раньше, чем класс A. - Избавиться от бекслешей
\
в названиях классов, оставив только последнюю часть (например,class \A\B\C {}
заменить на простоclass C {}
). - Удалить всё лишнее (папку
vendor/
и др.), кроме папкиlib/
.
Скорее всего, это всё, что необходимо помнить. Для PayPal SDK этого было достаточно, но для других пакетов возможно потребуется что-нибудь еще...
Немає коментарів:
Дописати коментар