Рассмотрим как установить Composer для управления зависимостями в PHP на CentOS 7.
Что такое Компоузер?
Composer — это инструмент для управления зависимостями в PHP. Он позволяет вам объявить библиотеки, от которых зависит ваш проект, и он будет управлять ими (устанавливать/обновлять) за вас.
Сайт | Документация (англ.)
Composer — менеджер зависимостей для PHP (аналогичен npm для Node.js или pip для Python).
Composer соберет все необходимые пакеты PHP, от которых зависит ваш проект, и будет управлять ими за вас. Он используется во всех современных PHP фреймворках и платформах, таких как Laravel, Symfony, Drupal и Magento 2.
Прежде чем продолжить убедитесь в том, что вы выполнили следующие условия:
- Авторизованы как пользователь с привилегиями sudo
- На Вашем CentOS 7 установлен PHP 7
Установка Composer на CentOS
Следующие шаги описывают установку Composer в системе CentOS 7.
1. Сначала установите пакет PHP CLI (интерфейс командной строки) и все остальные зависимости с помощью:
$ sudo yum install php-cli php-zip wget unzip
2. После установки PHP CLI скачайте скрипт инсталлятора Composer:
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Команда выше скачает файл composer-setup.php в текущий рабочий каталог.
3. Для проверки целостности данных скрипта сравните хэш скрипта SHA-384 с последним хэшем инсталлятора, найденным на странице Composer Public Keys / Signatures.
Следующая команда wget
загрузит ожидаемую сигнатуру последнего инсталлятора Composer со страницы Composer’s Github и сохранит её в переменной под названием HASH
:
$ HASH="$(wget -q -O - https://composer.github.io/installer.sig)"
Чтобы убедиться, что сценарий установки не поврежден, выполните следующую команду:
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Если хэши совпадают, будет показано следующее сообщение:
Installer verified
Если хэши не совпадают, вы увидите, что инсталлятор поврежден (Installer corrupt
). В этом случае вам нужно перезагрузить скрипт установки Composer и дважды проверить значение переменной $HASH
с помощью echo $HASH
. После того, как программа установки будет проверена, вы можете продолжить следующий шаг.
4. Для установки Composer в каталоге /usr/local/bin выполните следующую команду:
$ 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) устанавливается как общесистемная команда и будет доступен для всех пользователей.
5. Последний шаг — проверка установки:
$ composer
Вышеприведенная команда выведет версию Composer, команды и аргументы.
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.8.5 2019-04-09 17:46:47
Usage:
command [options] [arguments]
На данный момент вы успешно установили Composer на вашу систему CentOS.
Если вы хотите, чтобы для каждого проекта был установлен Composer, используйте следующую команду: php composer-setup.php
, которая создаст файл с именем composer.phar в вашем текущем рабочем каталоге. Вы можете использовать композер, запустив:
./composer.phar <command>
Начало работы с Composer
Теперь, когда Composer установлен на вашей CentOS системе, мы покажем вам, как использовать Composer в PHP проекте.
Начните с создания каталога, который будет корневым каталогом проекта и будет содержать файл composer.json.
Файл composer.json описывает ваш PHP проект, включая зависимости PHP и другие метаданные.
Создайте каталог проекта и переключитесь на него:
$ mkdir ~/my-first-composer-project
$ cd ~/my-first-composer-project
В этом примере мы создадим образец приложения, которое будет выводить на печать текущее время с помощью пакета под названием carbon.
Запустите следующую команду, чтобы инициализировать новый проект Composer и установить пакет carbon:
$ 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
Как видно из вышеприведенного вывода, Composer создаст файл composer.json и загрузит и установит carbon и все его зависимости.
Если вы выведете список каталогов вашего проекта, вы увидите, что он содержит два файла composer.json и composer.lock, а также каталог vendor
.
$ 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
— это каталог, в котором хранятся зависимости проекта. - В файле composer.lock содержится список всех установленных пакетов, включая их версии.
- Composer.json описывает проект PHP и все зависимости PHP.
Пакеты PHP для проекта вы можете найти в репозитории Composer Packagist.
Composer предоставляет возможности автозагрузки, которые позволяют использовать PHP-классы без необходимости использования требуемых (require
) или включаемых (include
) файлов.
Создайте файл с именем testing.php и добавьте следующий код:
<?php
require __DIR__ . '/vendor/autoload.php';
use Carbon\Carbon;
printf("Now: %s", Carbon::now());
Давайте проанализируем код построчно.
В первой строке после открытия тега php мы включаем файл vendor/autoload.php, который был автоматически сгенерирован Composer, который автоматически загрузит все библиотеки.
Далее мы присваиваем Carbon\Carbon
псевдоним Carbon
и в последней строке выводим текущее время методом Carbon now
.
Запустите скрипт, набрав:
$ php testing.php
Вывод должен выглядеть примерно так:
Now: 2018-09-26 20:08:18
Позже, если вы захотите обновить ваши пакеты PHP, вы можете просто запустить:
$ composer update
Команда выше проверит наличие более новых версий установленных пакетов, и если найдена более новая версия и ограничение по версии совпадает с версией, указанной в файле composer.json, Composer обновит пакет.
Вы научились устанавливать Composer на вашу машину CentOS 7. Мы также показали вам, как использовать Composer для создания базового PHP-проекта.
Чтобы найти больше информации о Composer, посетите официальную страницу документации Composer.