Зміст
Що таке той ваш composer?
То є такий собі менеджер залежностей php. Коли ви пишете свою програму вона так чи інакше залежить від інших (читай сторонніх) бібліотек як от різні API, фрейморки, ліби що вносять “синтаксичний цукор” і т.д. Так от composer дозволяє правильно керувати цими залежностями: вирішувати конфлікти, автоматично завантажувати правильні простори імен, швидко стягувати з сервера, оновлювати, шукати і т.д. Всі ці залежності він зберігає в теці з проектом тому це саме менеджер залежностей, а не менеджер пакунків (як PECL
) який зберігає залежності в системі. В принципі якщо ви знайомі з npm
, bower
, gem
то це аналогічна річ тільки для php.
Які проблеми вирішує composer?
- Ведення проекту зі сторонніми бібліотеками.
- Деякі з ваших бібліотек залежать від інших бібліотек. Вирішення конфліктів та пріоритети.
- Пошук та завантаження в проект потрібних версій бібліотек
Встановлення
В принципі інсталяція дуже проста (див. оф.сайт)1… для нормальних систем, а для денвера без танців і енергічного постукування по бубну не обійтись(див. наступний розділ)
curl -sS https://getcomposer.org/installer | php
Або його можна знайти в репозиторіях системи, якщо ви знаєте як це зробити.
Зауважте: Краще встановлювати composer в систему глобально щоб писати
composer <command>
а неphp composer.phar <command>
Встановлення у denwer
- Завантажити додатковий пакет модулів PHP2 для denwer (https://db.tt/GBqjgujD)
- Вимкнути denwer. Встановити бібліотеки.
- Завантажити інсталятор Composer для windows з офіційного сайту1 або за прямим посиланням.
- Підготуємо denwer.
c:\WebServers\usr\local\php5\php.ini
----------
819 | extension_dir = "/usr/local/php5/ext"
; замінити на
819 | extension_dir = "c:\WebServers\usr\local\php5\ext\"
- Увімкнемо розширення openssl
c:\WebServers\usr\local\php5\php.ini
----------
973 | ;extension=php_openssl.dll
; замінити на
973 | extension=php_openssl.dll
- Встановлення Composer-Setup.exe. Під час встановлення вказуємо шлях до php.exe наступним чином:
c:\WebServers\usr\local\php5\php.exe
- Можливо знадобиться вийти та зайти до системи
- Перевірка встановлення відбувається в консолі наступним чином:
composer -V
має бути щось на зразок
# Composer version 1.0-dev
Базові команди
composer init
Створює простий файл composer.json
за допомогою інтерактивного меню.
composer search <ключові слова>
Шукає співпадіння з описом або назвою в базі даних всіх пакунків3
composer create-project johnpbloch/wordpress dir/
Створює новий проект з вказаного пакунку в директорію dir/
composer install
Читає файл composer.json
вирішує залежності та встановлює всі необхідні пакунки.
composer require vendor-name/package-name
Додає вказаний пакунок до залежностей даного проекту в composer.json
та встановлює його.
composer update
Оновлює всі залежності проекту до останньої версії враховуючи обмеження вказані в налаштуваннях.
Зауважте: Інтерактивне представлення всіх команд та пояснення до них можна знайти тут4 (англ.) а у вигляді структурованого json тут5
Структура файлу composer.json
composer.json
то є стандартний json файл. Єдиним обов’язковим параметром є require
в якому має бути хоча б один елемент.
Приклад базового файлу:
{
"require": { //список залежностей та версій
"eldadfux/w3c-validator": "~0.1.0"
}
}
Composer підтримує спеціальний формат версій MAJOR.MINOR.PATCH які звуться семантичними6. Вказані версії можуть бути точними 1.0
, проміжком >=1.0 <2.0
або 1.0 - 2.0
, приблизними типу 1.*
або ~1.2
.
Приклад складного файлу:
{
"name": "laravel/laravel", //назва пакунка
"description": "The Laravel Framework.", //опис
"keywords": ["framework", "laravel"], //ключові слова
"license": "MIT", //ліцензія розповсюдження
"type": "project", // тип
"require": { //залежності для використання
"laravel/framework": "5.0.*"
},
"require-dev": { //залежності для розробки
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1"
},
"autoload": { //автозавантаження для використання
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": { //автозавантаження для розробки
"classmap": [
"tests/TestCase.php"
]
},
"scripts": { //виконання скріптів підчас процедур оновлення/встановлення
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php -r \"copy('.env.example', '.env');\"",
"php artisan key:generate"
]
},
"config": { //параметри конфігурації
"preferred-install": "dist"
}
}
Composer та Wordpress
Встановлення:
composer create-project johnpbloch/wordpress www/
Додавання до проекту репозиторію пакунків wordpress7 та кількох плагінів (ACF, SCPO, Cyr3Lat та ін.):
{
"name": "acme/brilliant-wordpress-site",
"description": "My brilliant WordPress site",
"repositories":[
{
"type":"composer",
"url":"http://wpackagist.org"
}
],
"require": {
"php": ">=5.3.2",
"johnpbloch/wordpress-core-installer": "~0.2",
"wpackagist-plugin/simple-custom-post-order": "~2.2",
"wpackagist-plugin/advanced-custom-fields": "~4.4",
"wpackagist-plugin/all-in-one-seo-pack": "~2.2",
"wpackagist-plugin/query-monitor": "~2.7",
"wpackagist-plugin/acf-field-date-time-picker": "~2.0",
"wpackagist-plugin/cyr3lat": "~3",
}
}
Багато цікавої інформації використання composer з wordpress можна знайти тут8.
Composer та IDE
composer.json
чудово редагується будь-яким редактором з підтримкою javascript
. Проте існують плагіни які спрощують роботу з ним.
- Composer-Sublime для Sublime Text 2 & 3
- PhpStorm з версії 8 має вбудовану підтримку composer9
- NetBeans з версії 7.3 має вбудовану підтримку composer10
- PHP Tools for Visual Studio11
Корисні посилання
-
getcomposer.org – Офіційний сайт composer. Тут знаходиться основна інформація, інструкція з встановлення на всіх платформах та документація. ↩ ↩2
-
denwer.ru/packages/php5.html – Офіційна сторінка додаткових модулів php для denwer. На випадок якщо оновиться денвер і пряме посилання не працюватиме. ↩
-
packagist.org – Основний репозиторій Composer. Тут знаходяться близько 54 тисячі пакунків які “з коробки” можуть бути встановлені. ↩
-
composer.json.jolicode.com – інтерактивне представлення консольних команд composer а також всіх параметрів файлу composer.json ↩
-
github.com/composer/composer/blob/master/res/composer-schema.json – Технічна документація кожного атрибуту та параметра файлу composer.json. ↩
-
semver.org – сементичні версії ↩
-
wpackagist.org – основний composer-репозиторій плагінів та тем для wordpress. Містить абсолютно всі плагіни та теми ↩
-
composer.rarst.net – Збірка корисних матеріалів для використання composer+wordpress. Метод збірки власного пакунку wordpress, керування плагінами WP, створення пакунків для ядра wordpress. ↩
-
jetbrains.com/phpstorm/help/using-composer-dependency-manager.html – використання composer в phpstorm ↩
-
blogs.oracle.com/netbeansphp/entry/composer_support – використання composer в NetBeans ↩
-
devsense.com/doc/phptools/projects/composer – використання composer у PHP Tools for Visual Studio ↩