Як використовувати Composer, вбудований у ServBay, для керування PHP-проєктом
Як потужне локальне середовище для веб-розробки, ServBay уже містить Composer, що значно спрощує керування залежностями у ваших PHP-проєктах. Composer — це незамінний сучасний інструмент для PHP-розробників, який допомагає легко інтегрувати сторонні бібліотеки, керувати складними залежностями і спрощує автозавантаження класів. Завдяки ServBay ви можете працювати з Composer без додаткової інсталяції чи налаштування — розпочинайте розробку швидко й ефективно.
Що таке Composer
Composer — це засіб для керування залежностями у PHP-проєктах. Він дозволяє розробникам вказати, які зовнішні бібліотеки потрібні для проєкту (зазвичай їх називають пакетами), і автоматично встановлює та оновлює ці пакети. Composer може керувати не тільки PHP-бібліотеками, а й фреймворками, компонентами, плагінами тощо.
Основні переваги
- Керування залежностями: Composer автоматично обробляє залежності проєкту, забезпечує сумісність версій бібліотек і вирішує потенційні конфлікти.
- Автоматичне завантаження: Composer формує автозавантажувач — достатньо підключити один файл, щоб використовувати всі класи, встановлені через Composer, без необхідності вручну писати
include
чиrequire
. - Керування версіями: У файлі
composer.json
ви задаєте обмеження версії кожної бібліотеки, Composer підбере потрібні версії згідно з цими правилами і зафіксує точні номери версій у файліcomposer.lock
. Це гарантує, що у різних командах чи на різних середовищах будуть однакові версії залежностей. - Пошук і отримання пакетів: Composer використовує центральний репозиторій Packagist, де можна легко знайти та підключити майже будь-яку популярну PHP-бібліотеку.
- Підтримка спільноти: Composer підтримується активною спільнотою розробників і має багаті офіційні та неофіційні ресурси.
Інтеграція Composer у ServBay
ServBay підтримує кілька версій PHP і вже містить Composer при встановленні. Це означає, що вам не потрібно окремо завантажувати або налаштовувати Composer — він вже готовий до роботи у вашій системі і прив'язаний до активної версії PHP. Ви можете використовувати команду composer
або (за потреби сумісності) composer-2.2
прямо у терміналі вашого проєкту.
Порада
Composer має дві основні версії: найновішу Composer 2.8.x
(для PHP 7.2+
) і Composer 2.2.x LTS
(для PHP 5.3 - PHP 7.1
).
За замовчуванням у ServBay інтегровано Composer 2.8.x
(для PHP 7.2+).
Щоб працювати із застарілими версіями PHP (5.3 - 7.1), встановіть у розділі "Пакети" Composer 2.2.x LTS
та використовуйте команду composer-2.2
. Обидві версії можуть співіснувати і не конфліктують.
Як за допомогою Composer керувати залежностями проєкту
Composer використовує файл composer.json
у корені вашого проєкту для менеджменту залежностей. Ось базові кроки створення та використання цього файлу.
1. Створіть файл composer.json
У кореневій директорії вашого PHP-проєкту створіть файл під назвою composer.json
. Наприклад, якщо ви працюєте у /Applications/ServBay/www/my_php_project
, створіть цей файл саме там.
composer.json
— це об'єкт JSON, де ключ require
визначає потрібні бібліотеки. Ключі — це імена пакетів (у форматі vendor/package
), значення — обмеження по версії.
Приклад для підключення бібліотеки Monolog (популярний логер для PHP), версія 2.0 або новіша:
json
{
"require": {
"monolog/monolog": "^2.0"
}
}
1
2
3
4
5
2
3
4
5
Тут ^2.0
означає "все, що сумісне з 2.0.0, але не вище 3.0.0".
2. Встановіть залежності
У терміналі, перебуваючи у директорії з файлами проєкту (де є composer.json
), введіть:
sh
composer install
1
Після виконання:
- Composer зчитає файл
composer.json
. - Визначить усі необхідні бібліотеки (включно з їхніми залежностями).
- Завантажить ці пакети у директорію
vendor
. - Створить файл-фіксацію версій
composer.lock
— його важливо додавати до системи контролю версій (наприклад, у Git), щоб вся команда працювала з однаковими пакетами. - Згенерує автозавантажувач
vendor/autoload.php
.
У результаті у вашій папці проєкту з’являться директорія vendor
і файл composer.lock
.
Як працює автозавантаження Composer
Одна із найпотужніших функцій Composer — автозавантаження класів. Він підтримує стандарти PSR-0 та PSR-4 і формує загальний файл-автозавантажувач.
Ось основи налаштування автозавантаження:
1. Додаємо секцію autoload
Додайте або змініть поле autoload
у вашому composer.json
. Наприклад, щоб налаштувати автозавантаження за PSR-4, прив'язавши простір імен App\
до папки src/
:
json
{
"require": {
"monolog/monolog": "^2.0"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Це означає, що будь-які класи у просторі імен App\
(наприклад, App\MyClass
) шукатимуться у src/MyClass.php
.
2. Сгенеруйте автозавантажувач
Якщо змінили секцію autoload
, обовʼязково оновіть карту автозавантаження командою:
sh
composer dump-autoload
1
Ця команда перерахує шлях до всіх класів і оновить vendor/autoload.php
. Якщо ви лише встановлюєте чи оновлюєте залежності без змін до autoload
, цього робити не потрібно — Composer зробить це автоматично на кроці install
чи update
.
3. Підключіть автозавантажувач у вашому PHP-коді
На початку PHP-файла додайте:
php
<?php
// Підключаємо файл автозавантаження Composer
require __DIR__ . '/vendor/autoload.php';
// Можна одразу використовувати бібліотеки, встановлені через Composer, та свої класи з autoload
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use App\MyClass; // якщо використовується autoload для App\
$log = new Logger('name');
$log->pushHandler(new StreamHandler('your.log', Logger::WARNING));
$log->warning('Це попередження!');
// Ваш код та класи (якщо додано autoload)
// $myObject = new MyClass();
// $myObject->doSomething();
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Додавши require __DIR__ . '/vendor/autoload.php';
, ви отримаєте доступ до всіх класів із залежностей Composer та власних, не турбуючись більше про купу ручних require
/include
. Це значно спрощує структуру коду.
Оновлення бібліотек
Якщо ваш проєкт розвивається, час від часу виникає потреба оновити версії пакетів.
У корені проєкту відкрийте термінал та виконайте:
sh
composer update
1
composer update
перевіряє, чи доступні нові версії залежностей відповідно доcomposer.json
, і якщо так — завантажує їх.- Після цього оновлює файл
composer.lock
, де будуть збережені точні нові версії встановлених пакетів.
Важливо:
composer install
іcomposer update
: Використовуйтеcomposer install
для первісного встановлення залежностей або коли розгортаєте проєкт. Він встановить саме ті версії, що явно зафіксовані уcomposer.lock
. Командаcomposer update
потрібна для апдейту всіх (або конкретних) пакетів і також оновлює ще йcomposer.lock
. У командних проєктах рекомендується робитиupdate
лише тоді, коли справді потрібно отримати нові версії, і після — комітити обидва файли (composer.json
іcomposer.lock
).
На що звернути увагу використовуючи Composer у ServBay
ServBay спрощує локальну розробку, але варто врахувати:
- Термінал: Виконуйте команди Composer у терміналі, що працює в рамках середовища ServBay. Зазвичай ServBay додає поточну активну версію PHP до системної змінної PATH, тому у кожному новому термінальному вікні команди
php
іcomposer
повинні працювати. Якщо бачите помилкуcommand not found
— закрийте й відкрийте термінал заново та перевірте, що ServBay запущений. - Версія PHP: ServBay дозволяє легко перемикати різні версії PHP. Команда
composer
працює через ту версію, яка зараз активна у панелі керування ServBay. Якщо вам потрібно працювати з конкретним старим PHP для певного проєкту — спершу перемкніть його у ServBay, і лише потім запускайте Composer. - Директорія проєкту: Рекомендується розміщувати свої веб-проєкти в директорії
/Applications/ServBay/www
, створюючи окремий підкаталог для кожного, і налаштовувати сайт у ServBay, щоб зручно відкривати його у браузері. При роботі з Composer перебувайте саме у теці вашого проєкту.
Приклад проєкту: Як підключити GuzzleHttp
Далі — покроковий приклад встановлення і використання GuzzleHttp (популярний HTTP-клієнт для PHP) у середовищі ServBay.
Створіть папку проєкту та перейдіть у неї: У корені сайтів ServBay створіть окрему папку та увійдіть у неї:
shcd /Applications/ServBay/www mkdir guzzle_demo.servbay.demo cd guzzle_demo.servbay.demo
1
2
3Для прикладу використовується домен у стилі ServBay.
Створіть
composer.json
: Додаємо файл до папкиguzzle_demo.servbay.demo
:json{ "require": { "guzzlehttp/guzzle": "^7.0" }, "autoload": { "psr-4": { "App\\": "src/" } } }
1
2
3
4
5
6
7
8
9
10Одразу задаємо PSR-4 автозавантаження — це гарна практика навіть для простих прикладів.
Встановіть залежності: Після команди:
shcomposer install
1Composer завантажить GuzzleHttp та всі потрібні бібліотеки, створить директорію
vendor
і файлcomposer.lock
.Створіть PHP-файл і використовуйте бібліотеку: Створіть у директорії
guzzle_demo.servbay.demo
файлindex.php
:php<?php // Підключаємо автозавантажувач Composer require __DIR__ . '/vendor/autoload.php'; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; echo "<h1>GuzzleHttp Demo</h1>"; echo "<pre>"; try { // Створюємо екземпляр Guzzle-клієнта $client = new Client(); // Відправляємо GET-запит $response = $client->request('GET', 'https://httpbin.org/get', [ 'query' => ['param1' => 'value1', 'param2' => 'value2'] ]); // Отримуємо тіло відповіді $body = $response->getBody()->getContents(); echo "Response Body:\n"; echo $body; // Статус-код відповіді $statusCode = $response->getStatusCode(); echo "\n\nStatus Code: " . $statusCode; } catch (RequestException $e) { // Обробляємо винятки запиту echo "Request Exception:\n"; echo $e->getMessage(); if ($e->hasResponse()) { echo "\nResponse Status: " . $e->getResponse()->getStatusCode(); echo "\nResponse Body: " . $e->getResponse()->getBody()->getContents(); } } catch (\Exception $e) { // Обробляємо інші винятки echo "An error occurred:\n"; echo $e->getMessage(); } echo "</pre>"; ?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44Даний скрипт підключає автозавантаження, створює клієнт Guzzle й робить HTTP-запит на сервіс-тестер із виведенням відповіді.
Налаштуйте сайт у ServBay: Відкрийте панель керування ServBay, перейдіть у розділ “Сайти” (раніше “Хости”), натисніть “додати сайт”, вкажіть шлях
/Applications/ServBay/www/guzzle_demo.servbay.demo
, виставте доменguzzle_demo.servbay.demo
, збережіть і перезавантажте вебсервер (Caddy або Nginx).Відкрийте сайт у браузері: Перейдіть за адресою
http://guzzle_demo.servbay.demo/
. Має відкритись сторінка з результатами виконання PHP-скрипта, що відображає отримані дані зhttps://httpbin.org/get
.
Поширені питання (FAQ)
Пит.: Я використовую PHP 5.6, Composer не працює — що робити?
Відповідь: ServBay пропонує дві версії Composer: актуальна 2.8.x та LTS 2.2.x. Для підтримки старого PHP 5.6 потрібно встановити Composer 2.2 LTS
і використовувати команду composer-2.2
.
Пит.: У терміналі при виконанні composer
отримую «command not found» — що робити?
Відповідь:
- Переконайтеся, що застосунок ServBay запущений.
- Спробуйте закрити та відкрити термінал заново — це оновить змінні середовища.
- Переконайтеся, що в ServBay активовано хоча б одну версію PHP.
- Якщо помилка зберігається, спробуйте явно вказати шлях до PHP та Composer у ServBay, наприклад:
/Applications/ServBay/php/8.2/bin/php /usr/local/bin/composer install
(шляхи можуть відрізнятися залежно від вашої системи, але зазвичай з ServBay достатньо простоcomposer
).
Пит.: Як вказати, яку саме версію PHP у ServBay використовує Composer?
Відповідь: Composer автоматично використовує ту версію PHP, яка активна в панелі керування ServBay. Просто оберіть і активуйте потрібну версію PHP, після чого відкрийте нове вікно терміналу — команда composer
запуститься із цією версією.
Пит.: Для чого потрібний файл composer.lock
? Чи варто додавати його до Git?
Відповідь: composer.lock
містить точні версії усіх залежностей, встановлених у проєкті на момент запуску composer install
чи composer update
. Дуже рекомендується завжди додавати цей файл у систему контролю версій (наприклад, у Git), щоб всі члени команди, CI, тестове і продакшн-середовище працювали зі 100% однаковими залежностями. Під час запуску composer install
Composer орієнтується саме на composer.lock
.
Висновок
ServBay завдяки вже інтегрованому Composer створює для PHP-розробників ефективне, зручне локальне середовище. Ви зможете легко керувати залежностями, використовувати автозавантаження та працювати із різними версіями PHP — це підвищує продуктивність і якість вашого коду. Використання ServBay разом із Composer — сучасний стандарт, що дозволяє швидко та надійно будувати PHP-проєкти.