25 paź

Jak zainstalować i używać Composer na Ubuntu 16.04

blog-composer-ubuntu-16-04

Composer jest popularnym narzędziem do zarządzania zależnościami dla PHP, stworzony głównie w celu ułatwienia instalacji i aktualizacji zależności projektu. Composer będzie sprawdzać jakie pakiety konkretnego projektu są zależne i zainstaluje je, stosując odpowiednie wersje w zależności od wymagań projektu.

Ten artykuł wyjaśni jak zainstalować i rozpocząć pracę z Composerem w systemie Ubuntu 16.04.

Wymagania

Będziesz potrzebował:

Krok #1 — Instalacja zależności

Zanim pobrać i zainstalować Composer, musimy upewnić się że nasz serwer ma zainstalowane wszystkie zależności.

Najpierw należy zaktualizować pamięć podręczną menedżera pakietów za pomocą polecenia:

sudo apt-get update

Teraz zainstalujemy zależności. Będziemy potrzebować curl, aby pobrać Composer oraz php-cli, aby instalować i uruchomić go. Pakiet php-mbstring jest konieczny dla zapewnienia funkcji biblioteki którą będziemy używać. git jest używany przez Composera do pobierania zależności projektu i unzip do rozpakowania skompresowanych pakietów. Wszystko można zainstalować za pomocą następującego polecenia:

sudo apt-get install curl php-cli php-mbstring git unzip

Teraz można przejść do następnego kroku.

Krok #2 – Pobieranie i instalowanie Composera

Composer oferuje instalator, napisany w PHP. Upewnij się, że jesteś w swoim katalogu domowym i pobierz instalator za pomocą curl:

cd ~

curl -sS https://getcomposer.org/installer -o composer-setup.php

Następnie należy uruchomić krótki skrypt PHP, aby upewnić się, że instalator hash SHA-384 odpowiada do najnowszego instalatora znalezionego na stronie Composer Public Keys / Signatures. Należy upewnić się, że można zastąpić hash najnowszym dla podświetlonej wartości poniżej:

php -r "if (hash_file('SHA384', 'composer-setup.php') === '92102166af5abdb03f49ce52a40591073a7b859a86e8ff13338cf7db58a19f7844fbc0bb79b2773bf30791e935dbd938') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Output
Installer verified

Aby zainstalować composer globalnie, należy użyć następującego polecenia:

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Spowoduje to pobranie i instalacje Composera jako polecenia ogólnosystemowego o nazwie composer, pod /usr/local/bin. To powinno wyglądać w następujący sposób:

Output
All settings correct for using ComposerDownloading 1.1.1... Composer successfully installed to: /usr/local/bin/composerUse it: php /usr/local/bin/composer

Aby przetestować instalację, uruchom:

composer

Output
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.1.1 2016-05-17 12:25:44

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
. . .

Oznacza to, że Composer został pomyślnie zainstalowany w systemie.

Uwaga: Jeśli wolisz mieć oddzielne pliki wykonywalne dla każdego projektu umieszczonego na tym serwerze, wystarczy zainstalować go lokalnie, na podstawie każdego projektu. Użytkownicy NPM będą zaznajomieni z tym podejściem. Metoda ta jest również przydatna, gdy użytkownik systemu nie ma uprawnień do instalacji całego systemu oprogramowania.

W tym przypadku instalacja może być wykonana po pobraniu i sprawdzeniu instalacji skryptu, jak opisano powyżej, na przykład tak:

php composer-setup.php

Spowoduje to wygenerowanie composer.phar pliku w bieżącym katalogu, który może być wykonany z ../composer.phar command.

Krok #3 – Generowanie pliku composer.json

W celu wykorzystania Composera w swoim projekcie, potrzebujesz plik composer.json. Plik composer.json w zasadzie mówi Composeru które zależności należy pobrać do swojego projektu i jakie wersje każdego pakietu mogą być zainstalowane. Jest to niezwykle ważne, aby zachować projekt spójny oraz uniknąć instalowania niestabilnych wersji, które potencjalnie mogą powodować problemy z kompatybilnością.

Nie ma potrzeby, aby tworzyć ten plik ręcznie ponieważ łatwo wpaść na błędy składniowe, gdy to robisz. Composer automatycznie generuje plik composer.json po dodaniu zależności do projektu za pomocą polecenia require. Dodatkowe zależności również mogą być dodane w taki sam sposób, bez konieczności ręcznego edytowania tego pliku.

Proces wykorzystania Composera do zainstalowania pakietu zależności w projekcie zazwyczaj obejmuje następujące etapy:

  • Określenie, jaki rodzaj biblioteki aplikacji jest potrzebny.
  • Badania odpowiedniej biblioteki open source na Packagist.org, oficjalnym repozytorium pakietów dla Composer.
  • Wybór pakietu, który musi być zależny.
  • Uruchomienie composer require dla włączenia zależności w pliku json i instalowanie pakietu.

Zobaczymy jak to działa w praktyce za pomocą prostej demo aplikacji.

Celem tej aplikacji jest przekształcenie tego wyrażenia w ciąg URL. To jest powszechnie stosowane do konwersji tytułów stron do ścieżki URL.

Zacznijmy od stworzenia katalogu dla naszego projektu. Będziemy go nazywać slugify:

cd ~

mkdir slugify

cd slugify

Wyszukiwanie pakietów na Packagist

Teraz wyszukamy Packagist.org dla pakietu, który może pomóc nam w generowaniu “slugs“. Jeśli szukać wyrażenia “slug” na Packagist, dostaniesz wynik podobny do tego:packagist

Zobaczysz dwie cyfry po prawej stronie każdego pakietu na liście. Numer na górze oznacza ile razy pakiet został zainstalowany, a numer na dole pokazuje ile razy pakiet został oznaczony na GitHub. Możesz sortować wyniki wyszukiwania na podstawie tych liczb (poszukaj dwóch ikon po prawej stronie paska wyszukiwania). Ogólnie, pakiety z dużą ilością instalacji i dużą ilością gwiazd, jak zwykle, będą bardziej stabilne, ponieważ bardzo dużo ludzi z nich korzysta. Ważne jest również, aby sprawdzić opis pakietu na wiarygodność – czy jest to naprawdę to, czego szukasz?

Z wyników wyszukiwania, wydaje się że pakiet cocur/slugify jest dobry, z rozsądną ilością ustawień i gwiazd. (Pakiet jest nieco poniżej w dół strony, niż widać na zrzucie ekranu).

Można zauważyć, że pakiety na Packagist mają nazwę dostawcy i nazwę pakietu. Każdy pakiet ma unikatowy identyfikator (namespace), w tym samym formacie GitHub wykorzystuje do swoich repozytoriów: vendor/package. Biblioteka, którą chcemy zainstalować używa nazwy cocur/slugify.

Przestrzeń nazw jest to, czego potrzebujemy do tego, aby zażądać pakietem w naszym projekcie.

Wymaganie Package

Teraz kiedy wiemy dokładnie, który pakiet chcemy zainstalować, możemy uruchomić composer require w celu włączenia go jako zależności, a także wygenerować plik composer.json dla projektu:

composer require cocur/slugify

Output
Using version ^2.1 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing cocur/slugify (v2.1.1)
    Downloading: 100%         

Writing lock file
Generating autoload files

Jak widać, Composer automatycznie postanowił, jaką wersję pakietu stosować. Jeśli spojrzeć na katalog projektu teraz, będzie on zawierał dwa nowe pliki: composer.json i composer.lock oraz katalog vendor :

ls –l

Output
total 12
-rw-rw-r-- 1 sammy sammy   59 May 17 10:24 composer.json
-rw-rw-r-- 1 sammy sammy 2894 May 17 10:24 composer.lock
drwxrwxr-x 4 sammy sammy 4096 May 17 10:24 vendor

Plik composer.lock jest używany do przechowywania informacji, o zainstalowanych wersjach każdego pakietu i bądź pewny, że te same wersje są używane, jeśli ktoś kopiuje projekt i instaluje jego zależności. W katalogu vendor znajdują się zależności projektu. Katalog vendor nie powinien być zobowiązany do systemu kontroli wersji  – trzeba tylko włączyć pliki composer.json i composer.lock.

Uwaga: Podczas instalowania projektu, który już zawiera plik composer.json, trzeba uruchomić composer install, aby pobrać zależności projektu.

Zrozumienie ograniczenia wersji

Jeśli sprawdzisz zawartość swojego pliku composer.json, zobaczysz coś takiego:

cat composer.json

Output
{
    "require": {
        "cocur/slugify": "^2.1"
    }
}

Można zauważyć znak specjalny ^ przed numerem wersji w composer.json. Composer obsługuje kilka różnych ograniczeń i formaty do określenia wymaganej wersji pakietu, w celu zapewnienia elastyczności przy jednoczesnym zachowaniu projektu stabilnym. Operator  kareta (^) używany automatycznie  i wygenerowany  przez plik composer.json,  jest zalecany przez operatora w celu zapewnienia maksymalnej kompatybilności, po semantycznej kontroli wersji . W tym przypadku, to określa 2.1 jako minimalna zgodna wersja, a także pozwala na aktualizacje do każdej przyszłej wersji poniżej 3.0 .

Ogólnie, nie trzeba manipulować ograniczeniami  wersji w swoim pliku composer.json. Jednak pewne sytuacje mogą wymagać ręcznej edycji ograniczeń – na przykład, kiedy duża nowa wersja wymaganej biblioteki jest dostępna i chcesz uaktualnić ją lub gdy chcesz używać biblioteki, nie należy semantyczne zarządzanie wersjami.

Oto kilka przykładów, które dają lepsze zrozumienie, jak działają ograniczenia wersji Composera:

 

Ograniczenie Znaczenie Przykład wersji
^1.0 >= 1.0 < 2.0 1.0, 1.2.3, 1.9.9
^1.1.0 >= 1.1.0 < 2.0 1.1.0, 1.5.6, 1.9.9
~1.0 >= 1.0 < 2.0.0 1.0, 1.4.1, 1.9.9
~1.0.0 >= 1.0.0 < 1.1 1.0.0, 1.0.4, 1.0.9
1.2.1 1.2.1 1.2.1
1.* >= 1.0 < 2.0 1.0.0, 1.4.5, 1.9.9
1.2.* >= 1.2 < 1.3 1.2.0, 1.2.3, 1.2.9

Aby zobaczyć więcej ograniczeń wersji Composera, czytaj oficjalnej dokumentacji.

Krok #4 – Włączenie Autoload Script

Ponieważ sam PHP nie obsługuje automatyczne ładowanie klas, Composer zapewnia również skrypt automatycznego ładowania, który można umieścić w swoim projekcie aby uzyskać automatyczne ładowanie za darmo. To sprawia, że ​​znacznie łatwiej jest pracować ze swoimi zależnościami i zdefiniować własne przestrzenie nazw.

Jedyna rzecz, którą musisz zrobić to włączyć plik vendor/autoload.php w swoim skrypcie PHP, przed jakąkolwiek klasą instancji.

Wróćmy do przykładowej aplikacji slugify. Użyjemy nano do tworzenia skryptu test.php , gdzie użyjemy biblioteki cocur / slugify :

nano test.php

To powinno produkować:

hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it

Krok #5 – Aktualizacja zależności projektu

Gdy chcesz zaktualizować zależności projektowe, wystarczy uruchomić polecenie update:

composer update

Pozwoli to sprawdzić, czy są dostępne nowe wersje bibliotek, wymaganych w projekcie. Jeżeli nowa wersja jest dostępna i jest zgodna z ograniczeniem wersji określonej w pliku composer.json, ona zastąpi poprzednią zainstalowaną wersję. Plik composer.lock zostanie zaktualizowany, aby pokazać te zmiany.

Można również aktualizować jedną lub kilka bardziej specjalistycznych bibliotek za pomocą polecenia:

composer update vendor/package vendor2/package2

Podsumowanie

Ten artykuł obejmuje podstawy do rozpoczęcia pracy z Composerem w Ubuntu 16.04. Composer jest potężnym narzędziem, które powinien mieć każdy programista PHP.

Oprócz zapewniania prostego i niezawodnego sposobu do zarządzania zależnościami projektów, także wyznacza faktycznie nowy standard do wymiany i otwierania PHP pakietów stworzonych przez społeczność.