• База знань
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

FREEHOST.WIKI

Що таке Composer у PHP та навіщо він потрібен?

Стаття також доступна російською (перейти до перегляду).

Давно ніхто не створює PHP-проєкти з нуля – жодна розробка не обходиться без сторонніх бібліотек та готових компонентів. Немає потреби винаходити заново велосипед, коли потрібні функції вже реалізували, протестували й підтримують інші розробники.

Найчастіше пакети потрібні для:

  • роботи зі сторонніми API;

  • надсилання HTTP-запитів до інших серверів;

  • логування;

  • відправлення електронної пошти;

  • роботи з базами даних;

  • та інших типових завдань.

Під час ручного налаштування розробнику потрібно було б регулярно повторювати низку дій – від пошуку бібліотек до оновлення та керування залежностями PHP-проєкту. Для автоматизації процесу є інструмент під назвою Composer.

Що таке Composer у PHP?

Composer – це пакетний менеджер залежностей PHP, що керує ними у проєкті. Він дозволяє описати, які саме сторонні бібліотеки потрібні (а також, за потреби, які саме версії). Після цього механізм сам аналізує, які версії сторонніх компонентів мають сумісність між собою, завантажує їх з інтернету та встановлює в проєкт.

Він керує залежностями на рівні конкретного PHP-проєкту, а не всієї операційної системи. На одному комп’ютері можуть спокійно кілька проєктів, кожен з яких використовує власну версію тієї самої бібліотеки. Пакети ізольовані, тому не конфліктують між собою.

Навіщо потрібен Composer?

Щоб краще зрозуміти, що таке Composer, візьмемо, наприклад, типове завдання під час роботи – потрібна бібліотека PHP для логування під назвою Monolog. Якби цього менеджера не існувало, то всі кроки пошуку та встановлення довелося б виконувати вручну, повторюючи процес у разі виходу нової версії.

Менеджер з PHP

Менеджер залежностей PHP автоматизує кожен крок, якщо вказати назву потрібного пакета. Composer спрощує:

  • встановленняPHP-бібліотек та їх залежностей;

  • контроль версій;

  • оновлення – воно виконується однією командою;

  • уніфікацію залежностей у різних середовищах, що значно зменшує кількість несподіваних помилок.

Це головні переваги та причини, чому розробники обирають цей інструмент для роботи.

Як працює Composer?

Щоб пакет Monolog встановився, потрібно створити файл конфігураціїcomposer.json. У ньому вказуються необхідні бібліотеки та їхні версії. Файл виглядатиме так: 

{
    "require": {
        "monolog/monolog": "^3.0"
    }
}

Головними тут є дві частини:

  1. monolog/monolog – це назва пакета PHP або бібліотеки для встановлення;

  2. ^3.0 – це вказівка на допустиму версію.

Прочитавши цей файл, Composer PHP звертається до офіційного сховища Packagist (або інших джерел), шукає та завантажує потрібні пакети, на які було вказано. Packagist – це основний публічний каталог пакетів PHP за замовчуванням, свого роду «магазин» сторонніх компонентів.

Що таке composer.json і composer.lock?

Функції цих файлів відрізняються:

  • composer.json створюється людиною і описує залежності PHP-проєкту та вимоги до них – це своєрідне технічне завдання;

  • composer.lock створюється менеджером пакетів PHP і містить конкретні встановлені версії пакетів – це фіксація того, що інструмент по факту завантажив та встановив.

Що таке composer.json та composer.lock

Таке розділення потрібне для уніфікації – якщо просто орієнтуватися на composer.json, у різний час були б доступні різні версії пакетів, наприклад, 3.4.0 сьогодні, а через тиждень – вже 3.5.0. А от файл composer.lock гарантує, що програмне оточення буде однаковим на комп’ютері розробника, у тестовому середовищі та на продакшн-сервері. Саме тому його зазвичай зберігають у Git разом з рештою файлів проєкту.

Якщо проект використовує власні або закриті пакети, Composer можна також налаштувати для роботи з приватним репозиторієм Composer.

Що таке каталог vendor?

Коли Composer завантажує та встановлює код сторонніх компонентів, він розміщує його у спеціальному каталозі всередині PHP-проєкту, який за замовчуванням має назву vendor.  

Компонент також займається автозавантаженням класів. Без нього довелося б вручну прописувати підключення (require або include) для кожного окремого файлу кожної встановленої бібліотеки. А от Composer створює файл автозавантаження PHP на початку роботи:

require __DIR__ . '/vendor/autoload.php'

Каталог vendor зазвичай не зберігають у Git-репозиторії – його додають у файл .gitignore, щоб виключити з системи контролю версій, бо зазвичай він досить великий і його легко відтворити. Тому кожне середовище самостійно створює власну копію каталогу vendor. 

Основні команди Composer

На початку роботи слід ознайомитись з кількома базовими командами менеджера залежностей PHP. Для їх використання також необхідно підготувати оточення PHP в Ubuntu.

Основними командами вважаються:

  • composer require vendor/package – додає нову залежність;

  • composer install – встановлює всі залежності, спираючись саме на зафіксовані версії з файлу composer.lock;

  • composer update – перевіряє, чи є доступні новіші версії залежностей (у межах обмежень, вказаних у composer.json) і оновлює їх;

  • composer remove vendor/package – видаляє вказану залежність із проєкту повністю, разом із файлами з каталогу vendor.

Команди composer install та composer update часто плутають, але вони виконують різні функції. Перша встановлює саме ті версії бібліотек PHP, які вже були зафіксовані раніше у composer.lock, і не робить оновлення. Її використовують для відтворення наявного оточення. А от update – це команда, яка активно шукає новіші версії залежностей і оновлює як самі PHP-бібліотеки, так і файл composer.lock. Після її застосування можлива зміна поведінки бібліотек.

Де використовується Composer?

Compose де-факто давно став стандартом в екосистемі і використовується практично в усіх проєктах різного масштабу та рівня.

Його використовують для автоматизації в:

  • фреймворках Symfony та Laravel;

  • незалежних PHP-бібліотеках, які розробники підключають до власних проєктів;

  • SDK (наборах інструментів) для роботи зі сторонніми сервісами;

  • клієнтах для роботи з різноманітними API;

  • бібліотеках для логування, кешування, а також зручної роботи з базами даних.

Тому вивчення його функціоналу – майже обов’язкова навичка для PHP-розробника.

Composer на хостингу

Знання Composer PHP корисне не лише під час написання коду, а й на практичному етапі розміщення проєкту на сервері чи хостингу. Під час деплою сучасного PHP-проєкту часто потрібно виконати composer install. Так розгортаються саме ті версії бібліотек, які зафіксовані у файлі composer.lock, – тобто ті самі, з якими проєкт розроблявся й тестувався.

Саме тому під час вибору хостингу варто заздалегідь звертати увагу на кілька моментів:

  • чи підтримується потрібна версія PHP;

  • чи є SSH-доступ для виконання команд безпосередньо на сервері;

  • чи взагалі реалізована можливість запускати Composer.

Дуже бюджетні або спрощені хостинги іноді не можуть забезпечити повне розгортанняпроєкту саме через відсутність підтримки інструмента.

Висновок

Що таке Composer – це менеджер пакетів PHP. Він суттєво спрощує роботу зі сторонніми бібліотеками – автоматично встановлює їх, контролює версії та залежності, а також дозволяє відтворити абсолютно однакове програмне оточення як під час розробки, так і під час тестування та розгортанняпроєкту. Розуміння базових принципів роботи і основних команд менеджера – це важлива навичка для будь-якого сучасного розробника.

Розмістіть PHP-проєкт на Unix-хостингу FREEhost.UA

Unix-хостинг для сайтів і PHP-проєктів із підтримкою сучасних технологій та зручним керуванням.

Стабільна інфраструктура, надійна робота сайтів і підтримка фахівців FREEhost.UA – усе необхідне для розміщення вашого проєкту.

ІНШІ СТАТТІ ЗА ТЕМОЮ

Дякуємо, що обираєте FREEhost.UA