Ma)(imuM bio photo

Ma)(imuM

Ще той дідько ;)

Email Google+ Github Stackoverflow Livelib Steam

Зміст

Що таке той ваш composer?

То є такий собі менеджер залежностей php. Коли ви пишете свою програму вона так чи інакше залежить від інших (читай сторонніх) бібліотек як от різні API, фрейморки, ліби що вносять “синтаксичний цукор” і т.д. Так от composer дозволяє правильно керувати цими залежностями: вирішувати конфлікти, автоматично завантажувати правильні простори імен, швидко стягувати з сервера, оновлювати, шукати і т.д. Всі ці залежності він зберігає в теці з проектом тому це саме менеджер залежностей, а не менеджер пакунків (як PECL ) який зберігає залежності в системі. В принципі якщо ви знайомі з npm, bower, gem то це аналогічна річ тільки для php.

Які проблеми вирішує composer?

  1. Ведення проекту зі сторонніми бібліотеками.
  2. Деякі з ваших бібліотек залежать від інших бібліотек. Вирішення конфліктів та пріоритети.
  3. Пошук та завантаження в проект потрібних версій бібліотек

Встановлення

В принципі інсталяція дуже проста (див. оф.сайт)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

Корисні посилання

  1. getcomposer.org – Офіційний сайт composer. Тут знаходиться основна інформація, інструкція з встановлення на всіх платформах та документація. 2

  2. denwer.ru/packages/php5.html – Офіційна сторінка додаткових модулів php для denwer. На випадок якщо оновиться денвер і пряме посилання не працюватиме.

  3. packagist.org – Основний репозиторій Composer. Тут знаходяться близько 54 тисячі пакунків які “з коробки” можуть бути встановлені.

  4. composer.json.jolicode.com – інтерактивне представлення консольних команд composer а також всіх параметрів файлу composer.json

  5. github.com/composer/composer/blob/master/res/composer-schema.json – Технічна документація кожного атрибуту та параметра файлу composer.json.

  6. semver.org – сементичні версії

  7. wpackagist.org – основний composer-репозиторій плагінів та тем для wordpress. Містить абсолютно всі плагіни та теми

  8. composer.rarst.net – Збірка корисних матеріалів для використання composer+wordpress. Метод збірки власного пакунку wordpress, керування плагінами WP, створення пакунків для ядра wordpress.

  9. jetbrains.com/phpstorm/help/using-composer-dependency-manager.html – використання composer в phpstorm

  10. blogs.oracle.com/netbeansphp/entry/composer_support – використання composer в NetBeans

  11. devsense.com/doc/phptools/projects/composer – використання composer у PHP Tools for Visual Studio