Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Просте керування пакетами за допомогою Composer

by
Difficulty:IntermediateLength:ShortLanguages:

Ukrainian (українська мова) translation by Anton Bagaiev (you can also view the original English article)

Давайте нарешті визнаємо: PHP має складну історію управління пакетами, і, як результат, зараз напрочуд важко знайти розробника, що активно використовує такі системи, як PEAR. З іншої сторони, більшість девелоперів обрали їх улюблені фреймворки, код яких написаний для вирішення багатьох речей, таких як інтеграція баз даних, ORM, OAuth, Amaxon S3 та такого іншого.

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


Вступ

"Клей між всіма проектами."

Composer був випущений, щоб вирішити ситуацію, назвавши себе "клеєм між усіма проектами" — це означає, що пакети можуть бути написані, розроблені і розповсюджені таким чином, що можуть бути вставлені у інші додатки з легкістю.

А ця стаття була випущена, щоб показати вам, як інсталювати і працювати з пакетами Composer. Прочитавши цю статтю, ви зможете встановити і запустити шмати коду в будь-якому фреймфорку, незалежно від того, чи це CodeIgniterFuelPHPLaravelSymfony2LithiumYiiZend... чи щось іще.


Крок 1 — Інсталяція Composer

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

Інсталяція додатку на Unix-подібній системі проста:

Це дуже просто! Тепер у вас є файл composer.phar у вашому проекті, що містить всю логіку консольного додатку.

Ви можете переконатись, що все інстальовано, виконавши наступне:

Ця команда виведе список всіх доступних команд.

Особисто я люблю робити цю команду системною:

Цей запит перемістить файл до теки з виконуваних файлів, що дозволить викликати Composer коротшою командою:

Якщо ви використовуєте Windows, ви можете просто завантажити цей файл і виконати його у PHP інтерпретаторі — там, де він може бути встановленим.


Крок 2 — Розуміння composer.json

Якщо ви також розробляєте на Ruby, для вас більш звичним є Gemfile. Або розробники Node також знають package.json. Схожим чином, Composer використовуює composer.json, щоб визначити налаштування і вимоги до пакетів у вашому додатку.

У своїй найпростішій формі, цей файл виглядатиме так:

Тут вимагається пакет "assetic", що створений "kriswallsmith", також вимагається будь-яка версія. Щоб вказати конкретну версію, ви можете використати наступне:

Ви навіть можете поєднати два підходи, наприклад, так:

Це дозволить автоматично вкласти мінорне оновлення, проте не дасть оновитись до 1.1.0, тому що може містити деякі зміни в інтерфейсі, які може не передбачити розробник.


Крок 3 — Вимоги до інсталяції

Тепер, коли ви вказали один чи більше пакетів у вашому composer.json, ви можете запустити наступне:

...або, якщо ви застосували мою фішку для скорочення на юніксових машинах (це було трохи вище):

Ви помітите, що файли завантажились і були поміщені у ному теку vendors/ у корені вашого додатку. Ім'я цієї теки може бути змінене, використовуючи наступний параметр у конфігурації:


Крок 4 — Автоматичне підвантаження

Автоматичне підвантаження у PHP перетворювалось у страшну кашу певний час.

Автоматичне підвантаження у PHP перетворювалось у страшну кашу певний час, тому що кожен розробник мав свій спосіб зберігати речі. Деякі пакети, такі як Smarty, використовують свій підвантажувач, деякі розробники кладуть декілька класів у один файл, або використовують тільки рядкові літери у іменах — варіантів безліч і всі вони непередбачувані.

PSR-0 є стандартом, створеним PHP Standards Group, покликаний вгамувати цей безлад; Composer працює з ним за замовчуванням. Composer працює з відвантажуванням PSR-0, що може бути вкладеним у ваш проект тільки одним рядком:

Очевидно, якщо ви змінили каталог з пакунками, потрібно буде оновити код.

Тепер ви можете застосовувати пакети:

Це приклад з використання Assetic. Так, тут багато простірів імен, проте це зроблено для застереження конфліктів у назвах пакунків. Правила іменування для PSR-0 наступні:

У наступному прикладі використаємо пакунок Buzz HTTP, що виглядає так:

Це може здатись на красивіший file_get_contents(), проте тут міститься багато видів розумної логіки, що працює з відповідями і запитами HTTP — і ви можете побачити, що синтакс просторів імен тут менш значний.


Крок 5 — Реальний світ

Якщо ви хочете діяти більш майстерно, ви можете автоматизувати весь процес.

Наразі, більшість проектів зберігають свої залежності у головному репозиторії; тож, якщо ви, наприклад, використовуєте Facebook SDK, ви просто пхаєте цю версію у ваш код, копіюючи код з гітхабу чи розпаковуючи архів. Потім ви додаєте це до системи управління версіями і створюєте новий коміт.

Версія, що працює з вашим кодом це статичний файл, що, у певний час, ви можете забути або не забути оновити — ЯКЩО ви помітите, що Facebook випустив нову версію. Нова версія файлу знов має бути завантажена і додана у систему управління версіями.

Але тепер ви можете використовувати Composer, щоб запобігти необхідності звертати увагу на версії, або просто запустити оновлення і закомітити всі зміни. Але навіщо тримати код у репозиторії, коли все є там?

Найохайнішим рішенням буде додати теку vendors/ у ваш .gitignore: і звільнити ваш код від цього назавжди. Коли ви розгортаєте код на ваші сервери, просто запустіть composer install або composer update.

А якщо ви хочете діяти дійсно майстерно, ви можете автоматизувати весь процес, тож якщо ваш хостинг знаходиться у хмарі, ви можете налаштувати автоматичний запуск composer install у момент, коли завантажено новий код!


Отже

Незабаром ви побачите рух багатьох фреймворків у сторону Composer, наприклад, FuelPHP буде побудований як пакети Composer, CodeIgniter буде підтримувати автопідвантаження, а Symfony2 вже широко їх використовує.

Composer є чудовим способом додавання пакетів до ваших проектів без інсталяції розширень PECL або закантаження купи файлів. Цей шлях вже надзвичайно застарів і потребує забагато часу розробників.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.