Вступление
Composer - это популярный инструмент управления зависимостями для PHP, созданный главным образом для облегчения установки и обновления зависимостей проекта. Он проверит, от каких других пакетов зависит конкретный проект, и установит их для вас, используя соответствующие версии в соответствии с требованиями проекта.
Этот туториал покажет, как установить Composer и приступить к работе на сервере Debian 8.
Предпосылки
Для этого урока вам понадобятся:
-
Один сервер Debian 8 с пользователем root, не являющимся root, как показано в Initial Server Setup с Debian 8
Шаг 1 - Установка зависимостей
Перед тем, как загрузить и установить Composer, мы должны убедиться, что на нашем сервере установлены все необходимые зависимости.
Сначала обновите кеш менеджера пакетов.
sudo apt-get update
Теперь давайте установим зависимости. Нам понадобится + curl +
для загрузки Composer и + php5-cli +
, пакета PHP, для его установки и запуска. Composer использует + git +
, систему контроля версий, для загрузки зависимостей проекта. Вы можете установить все три из этих пакетов одновременно с этой командой:
sudo apt-get install curl php5-cli git
Теперь, когда основные зависимости установлены, давайте продолжим и установим сам Composer.
Шаг 2 - Загрузка и установка Composer
Мы будем следовать инструкциям, как написано в https://getcomposer.org/download/кольная документация[Composer] с небольшой модификацией для глобальной установки Composer в + / usr / local / bin +
. Это позволит каждому пользователю на сервере использовать Composer.
Загрузите установщик в каталог + / tmp +
.
php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"
Посетите страницу Composer’s pubkeys и подписи и скопируйте строку SHA-384 вверху. Затем выполните следующую команду, заменив ++
на строку, которую вы скопировали.
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"
Эта команда проверяет хэш файла, который вы скачали, с правильным хэшем с веб-сайта Composer. Если он совпадает, он напечатает * Установщик проверен *. Если он не совпадает, он напечатает * Установщик поврежден *, и в этом случае вы должны дважды проверить, правильно ли вы скопировали строку SHA-384.
Далее мы установим Composer. Чтобы установить его глобально в + / usr / local / bin +
, мы будем использовать флаг + - install-dir +
; + - filename +
сообщает установщику имя исполняемого файла Composer. Вот как это сделать с помощью одной команды:
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
Вы увидите сообщение, подобное следующему:
OutputAll settings correct for using Composer
Downloading...
Composer (version 1.3.2) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
Вы можете проверить правильность установки Composer, проверив его версию.
composer --version
Вы должны увидеть версию, которая была установлена. На момент написания этой статьи версия:
Версия композитора
Composer version 1.3.2 2017-01-27 18:23:41
Наконец, вы можете безопасно удалить установочный скрипт, так как он вам больше не нужен.
rm /tmp/composer-setup.php
Composer теперь настроен и работает, ожидая использования вашим проектом. В следующем разделе вы создадите файл + composer.json
, который включает библиотеки PHP, от которых зависит ваш проект.
Шаг 3 - Генерация файла composer.json
Чтобы использовать Composer для проекта, вам понадобится файл + composer.json
. Файл + composer.json
сообщает Composer, какие зависимости необходимо загрузить для вашего проекта, и какие версии каждого пакета разрешено устанавливать. Это важно для обеспечения согласованности проекта и избежания установки нестабильных версий, которые могут вызвать проблемы обратной совместимости.
Вам не нужно создавать этот файл вручную; легко допустить синтаксические ошибки, если вы это сделаете. Composer автоматически генерирует файл + composer.json
, когда вы добавляете зависимость к своему проекту с помощью команды` + required`. Дополнительные зависимости также могут быть добавлены таким же образом, без необходимости вручную редактировать этот файл.
Процесс использования Composer для установки пакета в качестве зависимости в проекте обычно включает следующие шаги:
-
Определите, какая библиотека нужна приложению
-
Найдите подходящую библиотеку с открытым исходным кодом на Packagist.org, официальном репозитории для Composer.
-
Выберите пакет, от которого вы хотите зависеть
-
Запустите
+ composer require
, чтобы включить зависимость в файл` + composer.json` и установить пакет.
Мы увидим, как это работает на практике с простым демонстрационным приложением.
Цель этого приложения - преобразовать данное предложение в slug, который является строкой, удобной для URL. Это используется для преобразования заголовков страниц в пути URL (например, заключительная часть URL для этого урока).
Давайте начнем с создания каталога для проекта. Мы назовем это * slugify *:
cd ~
mkdir slugify
cd slugify
Далее, давайте поищем библиотеку, которую нам нужно использовать.
Поиск пакетов на Packagist
Затем, мы будем искать Packagist пакет, чтобы помочь генерировать слагов. Если вы ищете «слаг», вы увидите список пакетов. Справа от каждого пакета в списке вы увидите два числа: число сверху показывает, сколько раз пакет был установлен, а число снизу показывает, сколько раз пакет был помечен на GitHub.
Вообще говоря, пакеты с большим количеством установок и звездочек имеют тенденцию быть более стабильными, потому что их используют многие люди. Также важно проверить описание пакета, чтобы убедиться, что пакет действительно то, что вы ищете.
Нам нужен простой конвертер строк в слаг. В качестве примера здесь мы будем использовать пакет + cocur / slugify +
. Кажется, это хорошее совпадение, потому что у него есть разумное количество установок и звезд.
Вы заметите, что пакеты на Packagist имеют имя поставщика и имя пакета. Каждый пакет имеет уникальный идентификатор (пространство имен) в том же формате, который GitHub использует для своих репозиториев: + vendor / package +
. Библиотека, которую мы хотим установить, использует пространство имен + cocur / slugify +
. Пространство имен - это то, что нам нужно, чтобы запросить пакет в нашем проекте
Теперь, когда мы определили библиотеку, которую мы хотим, давайте добавим ее в файл + composer.json
.
Требование пакета
Мы можем запустить + composer require +
, чтобы включить библиотеку в качестве зависимости, а также сгенерировать файл + composer.json +
для проекта:
composer require
OutputUsing version ^2.3 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing cocur/slugify (v2.3) Downloading: 100%
Writing lock file
Generating autoload files
Как видно из вывода, Composer автоматически решил, какую версию пакета следует использовать. Если вы сейчас проверите каталог своего проекта, он будет содержать два новых файла: + composer.json
и` + composer.lock`, а также каталог + vendor / +
:
ls -l
Outputtotal 12
-rw-r--r-- 1 sammy sammy 59 Feb 1 13:43 composer.json
-rw-r--r-- 1 sammy sammy 2896 Feb 1 13:43 composer.lock
drwxr-xr-x 4 sammy sammy 4096 Feb 1 13:43 vendor
Файл + composer.lock +
используется для хранения информации о том, какие версии каждого пакета установлены, и убедитесь, что эти же версии используются, если кто-то еще клонирует ваш проект и устанавливает его зависимости. В каталоге + vendor / +
находятся зависимости проекта. Папка + vendor / +
не должна быть зафиксирована в управлении версиями; Вам нужно только включить файлы + composer.json +
и + composer.lock +
.
Вы можете заметить, что файл + composer.lock +
содержит конкретную информацию о версии библиотек PHP, от которых зависит наш проект. Composer использует специальный синтаксис, чтобы ограничить библиотеки определенными версиями. Давайте посмотрим, как это работает.
Понимание ограничений версии
Если вы проверите содержимое файла + composer.json
, вы увидите что-то вроде этого:
cat composer.json
Выход
{
"require": {
"cocur/slugify": "^2.3"
}
}
Перед номером версии стоит каретка + ^ +
. Composer поддерживает несколько различных ограничений и форматов для определения требуемой версии пакета, чтобы обеспечить гибкость и стабильность вашего проекта. Оператор каретки, используемый автоматически сгенерированным файлом + composer.json +
, является рекомендуемым оператором для максимальной функциональной совместимости после семантического контроля версий. В этом случае он определяет * 1.3 * как минимальную совместимую версию и разрешает обновления для любой будущей версии ниже * 2.0 *. Вы можете прочитать дополнительную информацию об обосновании версий в документации по версиям Composer.
До сих пор мы видели, как добавлять и ограничивать библиотеки PHP, необходимые для нашего проекта, с помощью Composer, используя файл + composer.json +
. Следующим шагом является использование этих библиотек внутри нашего приложения. Для этого Composer предоставляет файл + autoload.php +
, который облегчает процесс загрузки внешних библиотек.
Шаг 4 - Включение скрипта автозагрузки
Composer предоставляет скрипт автозагрузки, который вы можете включить в свой проект, чтобы получить автозагрузку бесплатно. Это значительно облегчает работу с вашими зависимостями и определяет ваши собственные пространства имен. Единственное, что вам нужно сделать, это включить файл + vendor / autoload.php
в ваши PHP-скрипты перед созданием любого класса.
Вернемся к примеру приложения + slugify +
. Используя + nano +
или ваш любимый текстовый редактор, создайте скрипт + test.php +
, в котором мы будем использовать библиотеку + cocur / slugify +
.
nano test.php
test.php
<?php
require __DIR__ . '/vendor/autoload.php';
use Cocur\Slugify\Slugify;
$slugify = new Slugify();
echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
Вы можете запустить скрипт в командной строке с помощью:
php test.php
Это должно привести к выводу:
Outputhello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
Вы полностью настроили Composer, но читайте дальше, чтобы узнать, как поддерживать установку.
Шаг 5 - Обновление зависимостей Composer и Project (необязательно)
Чтобы обновить сам Composer, вы можете использовать встроенную команду + self-update +
, которую он предоставляет. Поскольку Composer установлен глобально, вам нужно запустить команду с привилегиями root.
sudo -H composer self-update
Вы можете обновить одну или несколько конкретных библиотек, перечислив их специально с помощью + composer update
.
composer update /
Если вы хотите обновить все зависимости вашего проекта, выполните команду + update
.
composer update
Это проверит наличие новых версий библиотек, необходимых для вашего проекта. Если найдена более новая версия и она совместима с ограничением версии, определенным в файле + composer.json +
, она заменит предыдущую установленную версию. Файл + composer.lock +
будет обновлен, чтобы отразить эти изменения.
Заключение
Composer - это мощный инструмент, который должен быть у каждого разработчика PHP. Помимо предоставления простого и надежного способа управления зависимостями проекта, он также устанавливает новый стандарт де-факто для совместного использования и обнаружения пакетов PHP, созданных сообществом.
В этом уроке мы кратко описали основы Composer: как его установить, как создать проект и найти пакеты для него, и как его поддерживать. Чтобы узнать больше, вы можете изучить official Composer документацию.