Composeris je správce závislostí pro PHP (podobně jako npm pro Node.jsor pip pro Python).
Composer stáhne všechny požadované balíčky PHP, na kterých váš projekt závisí, a bude je spravovat za vás. Používá se ve všech moderních PHP frameworkech a platformách jako Laravel, Symfony, Drupal a Magento 2.
V tomto tutoriálu projdeme kroky instalace a používání aplikace Composer na počítači CentOS 7.
Předpoklady #
Než budete pokračovat v tomto kurzu, ujistěte se, že jste splnili následující předpoklady:
- Přihlášeni jako uživatel s právy sudo
- Mějte na svém systému CentOS 7 nainstalované PHP 7.
Instalace aplikace Composer na CentOS #
Následující kroky popisují, jak nainstalovat Composer na systém CentOS 7.
-
Nejprve nainstalujte balíček PHP CLI (command line interface) a všechny ostatní závislosti pomocí:
sudo yum install php-cli php-zip wget unzip
-
Jakmile je PHP CLI nainstalováno, stáhněte si instalační skript Composer pomocí:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Výše uvedený příkaz stáhne
composer-setup.php
soubor v aktuálním pracovním adresáři. -
Chcete-li ověřit integritu dat skriptu, porovnejte skript
SHA-384
hash s nejnovějším hashem instalačního programu, který najdete na stránce Composer Public Keys / Signatures.Následující příkaz wget stáhne očekávaný podpis nejnovějšího instalačního programu Composer ze stránky Github skladatele a uloží jej do proměnné s názvem
HASH
:HASH="$(wget -q -O - https://composer.github.io/installer.sig)"
Chcete-li ověřit, že instalační skript není poškozen, spusťte následující příkaz:
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Pokud se hodnoty hash shodují, zobrazí se následující zpráva:
Installer verified
Pokud se hodnoty hash neshodují, zobrazí se
Installer corrupt
. V tomto případě si musíte znovu stáhnout instalační skript Composer a znovu zkontrolovat hodnotu$HASH
proměnná secho $HASH
. Jakmile je instalační program ověřen, můžete pokračovat dalším krokem. -
Spuštěním následujícího příkazu nainstalujte Composer do
/usr/local/bin
adresář:sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
All settings correct for using Composer Downloading... Composer (version 1.8.5) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer
composer
je nainstalován jako celosystémový příkaz a bude dostupný všem uživatelům. -
Posledním krokem je ověření instalace:
composer
Výše uvedený příkaz vytiskne verzi, příkazy a argumenty skladatele.
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.8.5 2019-04-09 17:46:47 Usage: command [options] [arguments]
V tomto okamžiku jste úspěšně nainstalovali Composer na váš systém CentOS.
php composer-setup.php
který vytvoří soubor s názvem composer.phar
ve vašem aktuálním pracovním adresáři. Skladatel můžete použít spuštěním ./composer.phar <command>.
Začínáme se skladatelem #
Nyní, když je Composer nainstalován ve vašem systému CentOS, ukážeme vám, jak používat Composer v projektu PHP.
Začněte vytvořením adresáře, který bude kořenovým adresářem projektu, a podržte composer.json
soubor.
composer.json
popisuje váš projekt PHP včetně závislostí PHP a dalších metadat.
Vytvořte adresář projektu a přepněte se do něj pomocí:
mkdir ~/my-first-composer-project
cd ~/my-first-composer-project
V tomto příkladu vytvoříme ukázkovou aplikaci, která vytiskne aktuální čas pomocí balíčku zvaného uhlík.
Spusťte následující příkaz pro inicializaci nového projektu Composer a instalaci balíčku uhlíku:
composer require nesbot/carbon
Using version ^2.2 for nesbot/carbon
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
- Installing symfony/polyfill-mbstring (v1.9.0): Downloading (100%)
- Installing symfony/translation (v4.1.4): Downloading (100%)
- Installing nesbot/carbon (2.2.0): Downloading (100%)
symfony/translation suggests installing symfony/config
symfony/translation suggests installing symfony/yaml
symfony/translation suggests installing psr/log-implementation (To use logging capability in translator)
Writing lock file
Generating autoload files
Jak můžete vidět z výstupu výše, Composer vytvoří composer.json
soubor a stáhne a nainstaluje uhlík a všechny jeho závislosti.
Pokud uvedete adresář svého projektu, uvidíte, že obsahuje dva soubory composer.json
a composer.lock
a vendor
adresář.
ls -l
-rw-r--r-- 1 linuxize users 60 Aug 29 00:50 composer.json
-rw-r--r-- 1 linuxize users 6.8K Aug 29 00:50 composer.lock
drwxr-xr-x 5 linuxize users 4.0K Aug 29 00:50 vendor
vendor
adresář je adresář, kde jsou uloženy závislosti projektu.- Zámek
composer.lock
obsahuje seznam všech nainstalovaných balíčků včetně jejich verzí. composer.json
popisuje projekt PHP a všechny závislosti PHP.
Composer poskytuje funkce automatického načítání, které nám umožňují používat třídy PHP bez nutnosti použití require
nebo include
soubory.
Vytvořte soubor s názvem testing.php
a přidejte následující kód:
<?php
require __DIR__ . '/vendor/autoload.php';
use Carbon\Carbon;
printf("Now: %s", Carbon::now());
Pojďme analyzovat kód řádek po řádku.
V prvním řádku za úvodní značkou php uvádíme vendor/autoload.php
soubor, který automaticky vygeneroval Composer, který automaticky načte všechny knihovny.
Dále vytvoříme alias Carbon\Carbon
jako Carbon
a v posledním řádku tiskneme aktuální čas pomocí uhlíku now
metoda.
Spusťte skript zadáním:
php testing.php
Výstup by měl vypadat nějak takto:
Now: 2018-09-26 20:08:18
Později, pokud budete chtít aktualizovat své balíčky PHP, můžete jednoduše spustit:
composer update
Výše uvedený příkaz zkontroluje, zda jsou k dispozici novější verze nainstalovaných balíčků a zda je nalezena novější verze a zda se omezení verze shoduje s omezením uvedeným v souboru composer.json
, Composer balíček aktualizuje.