Під час розробки програмного забезпечення, незалежно від складності проєкту, майже завжди виникає потреба у використанні зовнішніх бібліотек, модулів або компонентів. Ці необхідні зовнішні ресурси для коректної роботи програмного продукту називаються залежностями.
Ефективне управління залежностями є ключовим елементом будь-якого проєкту. На щастя, існує ряд інструментів, створених для автоматизації цього процесу та спрощення роботи розробників. Вибір інструменту для управління залежностями залежить від мови програмування та екосистеми, в якій ви працюєте.
Якщо ви створюєте проєкти на PHP, то вам варто звернути увагу на Composer як інструмент для управління залежностями.
Що таке Composer?
Composer – це популярний інструмент, призначений для керування залежностями в PHP-проєктах. Натхненний npm для Node.js та Bundler для Ruby, Composer дозволяє вам декларувати зовнішні бібліотеки, необхідні вашому PHP-проєкту, і автоматично керувати ними.
Це означає, що Composer встановлює усі потрібні залежності для вашого проєкту, а також оновлює їх до актуальних версій.
Важливо зауважити, що Composer не є менеджером пакетів на кшталт Apt або Yum. Він працює з бібліотеками, які не встановлюються глобально в системі. Натомість, Composer керує залежностями кожного проєкту окремо, встановлюючи їх локально в каталозі всередині PHP-проєкту.
Composer також дозволяє визначити, які версії пакетів можна встановити, і автоматично встановлює їх. Він надає єдину команду для оновлення всіх залежностей у вашому проєкті.
Composer є незамінним інструментом для розробки PHP-проєктів. Він забезпечує ефективне керування залежностями та надає доступ до репозиторію Packagist, який містить велику кількість PHP-пакетів та бібліотек, що можна використовувати у ваших проєктах як залежності.
Належне управління залежностями за допомогою Composer дозволяє розробляти програмне забезпечення за модульним принципом, ефективно керувати версіями та покращує співпрацю в команді. Крім того, це допомагає уникнути проблем із сумісністю і робить проєкти більш зручними в обслуговуванні.
Давайте розглянемо, як встановити Composer в Ubuntu. Спочатку обговоримо передумови, які потрібно виконати перед встановленням.
Передумови для встановлення Composer в Ubuntu
Для встановлення Composer в Ubuntu необхідно:
1. Мати доступ до терміналу та можливість виконувати команди з правами root.
2. Встановити PHP версії 7.2.5 або вище. Перевірити наявність PHP та його версію можна за допомогою команди в терміналі:
php -version
Якщо PHP встановлено, ви отримаєте приблизно такий результат:
Якщо PHP не встановлено, скористайтесь командою для встановлення:
sudo apt install php
3. Мати систему контролю версій, наприклад, Git. Перевірити наявність Git можна командою:
git --version
Якщо Git встановлено, ви побачите номер версії:
Якщо Git не встановлено, скористайтеся командою для встановлення:
sudo apt install git
4. Встановити менеджер архівів, наприклад, tar. Перевірити наявність tar можна командою:
tar --version
Якщо tar не встановлено, встановіть його командою:
sudo apt-get install tar
Після виконання цих передумов, ви готові до встановлення Composer.
Як встановити Composer на Ubuntu
Composer можна встановити глобально або локально в контексті PHP. Глобальне встановлення дозволяє викликати Composer з будь-якого каталогу вашої системи, на відміну від локального.
Рекомендовано глобальне встановлення Composer, саме його ми і виконаємо.
Встановлення Composer в Ubuntu через термінал передбачає використання скриптів зі сторінки завантаження Composer.
Для глобального встановлення Composer на Ubuntu виконайте наступні кроки:
1. Відкрийте термінал та виконайте команду для завантаження інсталятора Composer у поточний каталог:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
2. Виконайте команду для перевірки SHA-384 інсталятора:
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
SHA-384 інсталятора є криптографічним хешем, що гарантує цілісність інсталяційного файлу. Це є засобом безпеки для впевненості, що завантажений файл не був пошкоджений або змінений.
Виконання команди повинно вивести повідомлення про успішну перевірку інсталятора. Продовжуйте, якщо ви отримали підтвердження цілісності файлу.
3. Запустіть інсталятор командою:
php composer-setup.php
Ви повинні отримати висновок, що підтверджує успішне встановлення Composer.
Зверніть увагу, що файл composer.phar, який є виконуваним файлом Composer, був доданий до каталогу, де ви його встановили.
4. Після успішного встановлення видаліть завантажений інсталятор, оскільки він більше не потрібен:
php -r "unlink('composer-setup.php');"
5. Щоб мати можливість викликати Composer з будь-якого каталогу, потрібно перемістити файл composer.phar в каталог, що знаходиться в PATH. Виконайте команду та введіть пароль, коли з’явиться запит:
sudo mv composer.phar /usr/local/bin/composer
6. Переконайтеся, що Composer встановлено успішно, виконавши команду:
composer
У разі успішного встановлення, ви отримаєте наступний результат.
Як використовувати Composer
Після встановлення Composer, наступним кроком є його використання для керування залежностями. Як згадувалося раніше, Composer має репозиторій Packagist, який містить пакети, що можна встановити як залежності за допомогою Composer.
Для прикладу, встановимо пакет http-повідомлення, який є інтерфейсом для опису HTTP-повідомлень.
Щоб використати Composer для встановлення http-повідомлення:
1. Створіть нову папку з назвою composerDemo та перейдіть до неї за допомогою команд у терміналі:
mkdir composerDemo
cd composerDemo
2. Створіть файл .gitignore у каталозі:
touch .gitignore
Цей файл дозволяє вказати, які файли Git не повинен відстежувати.
3. Згенеруйте файл composer.json для вашого проєкту:
composer init
Файл composer.json є центральним файлом конфігурації Composer. У ньому вказуються метадані вашого проєкту, а також залежності, якими Composer буде автоматично керувати.
Виконання команди призведе до наступного результату:
Вказівки допоможуть вам створити файл composer.json. У першому запиті натисніть Enter, щоб прийняти запропоновану назву проєкту.
4. У наступному запиті введіть короткий опис проєкту та натисніть Enter. Можете використати наступний опис та натиснути Enter.
A demonstration of how to use PHP Composer
5. Наступний запит про автора, натисніть Enter для використання значення за замовчуванням.
6. Далі потрібно вказати мінімальну стабільність, залиште поле порожнім, натиснувши Enter.
7. Вкажіть тип пакета, введіть project та натисніть Enter:
8. На запит про ліцензію натисніть Enter, щоб залишити поле порожнім.
9. Потім з’явиться запит, чи хочете ви вказати залежності, виберіть Так, натиснувши Enter. Після цього вам запропонується знайти пакет.
10. Введіть http-message у рядку пошуку пакета та натисніть Enter. Ви побачите результати пошуку:
Перший пакет psr/http-message є потрібним. Для вибору введіть 0 (нуль) та натисніть Enter.
11. В наступному запиті введіть обмеження версії (або залиште поле порожнім для останньої версії). Потрібно вказати версію, або залишити поле порожнім для останньої версії.
Щоб дізнатися про останню версію пакета, перейдіть на його сторінку на Packagist. Остання версія 2.0:
Composer автоматично оновлює пакети до останніх версій. Щоб уникнути оновлення до несумісної версії, введіть наступне для вказівки версії пакета та натисніть Enter:
^2.0
Це вкаже Composer встановити версію 2.0 або новішу, якщо вона сумісна.
12. На запит про пошук іншого пакета натисніть Enter для пропуску цього кроку.
13. На запит про залежності від розробника, натисніть Enter. Наступний запит про пошук пакета пропустіть, натиснувши Enter.
14. На запит про автозавантаження PSR-4 натисніть Enter для пропуску.
15. Ви побачите попередній перегляд згенерованого файлу composer.json:
Натисніть Enter для підтвердження генерації.
16. На запит про встановлення вказаних залежностей натисніть Enter для встановлення:
17. Відкрийте проєкт у редакторі коду за допомогою команди:
code .
Результат показано нижче:
Зверніть увагу, що згенеровано файл composer.json, а залежності вказано під ключем require. Залежності зберігаються в каталозі vendor.
18. Щоб уникнути відстеження каталогу vendor, додайте рядок /vendor/ у файл .gitignore:
/vendor/
Не рекомендується відстежувати цей файл, тому що він може бути дуже великим, а залежності можна встановити автоматично з файлу composer.json.
19. Після створення файлу composer.json, ви можете додавати нові залежності, редагуючи секцію require. Наприклад, щоб додати пакет log, внесіть зміни до файлу composer.json:
"require": { "psr/http-message": "^2.0", "psr/log": "^3.0.0" },
20. Щоб встановити нову залежність, виконайте в терміналі:
composer update
Результат:
Тепер ви готові використовувати Composer для управління залежностями в PHP-проєктах.
Як оптимізувати Composer для кращого керування пакетами
Для ефективної роботи Composer, точно вказуйте обмеження версій для залежностей, наприклад, “^2.0”.
Уникайте використання широких обмежень, наприклад, “*”, що може призвести до встановлення будь-якої версії пакета, що викликає проблеми з сумісністю та стабільністю.
Не додавайте занадто багато додаткових скриптів до файлу composer.json, додавайте тільки необхідні, оскільки це може призвести до значних витрат часу на керування залежностями.
Щоб оптимізувати швидкість Composer, увімкніть розширення PHP curl. Також можна використовувати плагіни, наприклад, hirak/prestissimo, які розпаралелюють операції Composer, що прискорює встановлення пакетів.
Очищуйте кеш Composer від старих та невикористаних пакетів для оптимізації продуктивності. Не фіксуйте каталог vendor. Це прискорить клонування та оновлення репозиторіїв.
Як видалити Composer
Якщо ви не хочете використовувати Composer в Ubuntu, видаліть його командою:
sudo rm -rf /usr/local/bin/composer
Підтвердьте видалення Composer командою:
composer
Якщо Composer видалено успішно, ви отримаєте наступний результат:
Висновок
Управління залежностями є важливим процесом під час розробки проєктів. Ефективне управління залежностями гарантує відсутність проблем з сумісністю та робить проєкти більш придатними для обслуговування.
Composer дозволяє розробляти модульне програмне забезпечення та покращує співпрацю між членами команди розробників. Якщо ви створюєте PHP-проєкти, використовуйте Composer для ефективного керування залежностями.
Для подальшого вивчення можете прочитати про те, що таке Ubuntu PPA та як його встановити.