One place for hosting & domains

      Установка и использование Composer в Ubuntu 18.04


      Предыдущая версия данного обучающего руководства была написана Бренненом Бернсом.

      Введение

      Composer — это популярный менеджер зависимостей PHP, который упрощает процесс установки и обновления зависимостей проекта. Он проверяет, от каких прочих пакетов зависит конкретный проект, а затем устанавливает все необходимые версии пакетов в соответствии с требованиями.

      Данное руководство поможет установить и начать работу с Composer на сервере Ubuntu 16.04.

      Предварительные требования

      Для данного обучающего руководства вам потребуется следующее:

      Шаг 1 — Установка зависимостей

      Прежде чем приступить к загрузке и установке Composer, нужно убедиться, что на сервере установлены все зависимости.

      Во-первых, необходимо обновить кэш менеджера пакетов:

      Теперь мы установим зависимости. Нам потребуется curl, чтобы загрузить Composer, и php-cli для установки и запуска. Пакет php-mbstring необходим для предоставления функций для библиотеки, которую мы будем использовать. git используется Composer для загрузки зависимостей проекта, а unzip для извлечения заархивированных пакетов. Все пакеты можно установить при помощи следующей команды:

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

      После установки всех обязательных пакетов мы можем переходить к установке Composer.

      Шаг 2 — Загрузка и установка Composer

      Composer предоставляет написанный на PHP установщик. Мы должны загрузить его, убедиться, что он не поврежден, а затем использовать его для установки Composer.

      Убедитесь, что вы находитесь в домашней директории, а затем загрузите установщик с помощью curl:

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

      Затем убедитесь, что хэш установщика совпадает с хэшем SHA-384 для последней версии установщика на странице Composer Public Keys / Signatures. Скопируйте хэш с этой страницы и сохраните его в качестве переменной командной строки:

      • HASH=544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061

      Обязательно замените последний хэш на выделенное красным значение.

      Теперь выполните следующий PHP скрипт, чтобы убедиться, что скрипт установки безопасен для запуска:

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

      Вы должны увидеть следующий вывод:

      Output

      Installer verified
      

      Если вы увидите Installer corrupt, вам нужно снова загрузить скрипт установки и повторно убедиться, что вы используете правильный хэш. Запустите команду и снова проверьте установщик. После успешной проверки установщика вы можете продолжить.

      Чтобы выполнить глобальную установку composer, используйте следующую команду, которая выполнит загрузку и установку Composer в качестве общесистемной команды composer в каталоге /usr/local/bin:

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

      Вывод должен выглядеть так:

      Output

      All settings correct for using Composer Downloading... Composer (version 1.6.5) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer

      Чтобы протестировать установку, запустите команду:

      Вы должны получить подобный вывод с версией и аргументами Composer.

      Output

      ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ / __ `__ / __ / __ / ___/ _ / ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / ____/____/_/ /_/ /_/ .___/____/____/___/_/ /_/ Composer version 1.6.5 2018-05-04 11:44:59 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. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug . . .

      Это значит, что менеджер зависимостей Composer был успешно установлен и доступен в рамках всей системы.

      Примечание: если вы предпочитаете иметь отдельные исполняемые модули Composer для каждого проекта, который вы размещаете на этом сервере, вы можете выполнить установку локально для каждого проекта. Пользователи NPM должны быть знакомы с данным подходом. Этот метод также полезен, когда системный пользователь не имеет прав на установку программного обеспечения в рамках всей системы.

      Для этого воспользуйтесь командой php composer-setup.php​​. В результате будет сгенерирован файл composer.phar в текущей директории, который можно исполнить с помощью команды ./composer.phar.

      А теперь давайте рассмотрим использование Composer для управления

      Шаг 3 — Использование Composer в PHP проекте

      PHP проекты часто зависят от внешних библиотек, и управление этими зависимостями и их версиями может вызывать затруднения. Composer решает эту проблему, отслеживая ваши зависимости и упрощая для других установку этих зависимостей.

      Чтобы использовать Composer в вашем проекте, вам потребуется файл composer.json. Файл composer.json указывает Composer, какие зависимости для вашего проекта нужно загрузить, а также какие версии каждого пакета можно использовать. Это очень важно для сохранения последовательности вашего проекта и отказа от установки нестабильных версий, которые могут вызывать проблемы с обратной совместимостью.

      Вам не нужно создавать этот файл вручную, потому что вы можете легко допустить ошибку в синтаксисе. Composer автоматически генерирует файл composer.json, когда вы добавляете в ваш проект зависимость с помощью команды require. Вы можете добавлять дополнительные зависимости таким же образом без необходимости вручную изменять файл.

      Использование Composer для установки пакета в качестве зависимости в проект подразумевает следующие шаги:

      • Определите, какая библиотека необходима приложению.
      • Изучите подходящую библиотеку из открытого источника на Packagist.org, официальном репозитории пакетов для Composer.
      • Выберите пакет, который вы будете использовать в качестве зависимости.
      • Запустите composer require, чтобы включить зависимость в файл composer.json и установить пакет.

      Давайте попробуем сделать это на примере демо-приложения.

      Приложение преобразует указанное предложение в понятную человеку часть URL-адреса (slug). Как правило, подобные приложения используются для преобразования названия страницы в URL-адрес (например, последняя часть URL для данного обучающего руководства).

      Начнем с создания директории для нашего проекта. Мы назовем его slugify.

      • cd ~
      • mkdir slugify
      • cd slugify

      Теперь нужно найти на Packagist.org пакет, который поможет нам генерировать понятные человеку части URL-адреса. При поиске термина «slug» на Packagist вы получите примерно такой результат:

      Packagist Search: easy-slug/easy-slug, muffin/slug, ddd/slug, zelenin/slug, webcastle/slug, anomaly/slug-field_type

      Вы увидите два числа с правой стороны каждого пакета в списке. Число сверху указывает на количество установок пакета, а число внизу показывает, какие оценки пакету ставили на GitHub. Вы можете изменить порядок результатов поиска на основе этих чисел (посмотрите на два значка с правой стороны панели поиска). Как правило, пакеты с большим количеством установок и большим количеством звезд более стабильны, потому что многие люди их используют. Также важно проверить описание пакета на соответствие тому, что вам нужно.

      Нам нужен простой конвертер ​​из строки в понятную человеку часть URL-адреса. Судя по результатам поиска пакет cocur/slugify кажется наиболее подходящим вариантом с большим количеством установок и звезд (Пакет расположен ниже в результатах поиска, чем видно на скриншоте).

      Пакеты на Packagist имеют имя автора и имя пакета. Каждый пакет имеет уникальный идентификатор (пространство имен) в том же формате, который использует GitHub для своих репозиториев в форме автор/пакет. Библиотека, которую мы хотим установить, использует пространство имен cocur/slugif. Вам нужно пространство имен, чтобы использовать пакет в вашем проекте.

      Теперь, когда вы знаете, какой пакет хотите установить, запустите composer require, чтобы использовать его в качестве зависимости, а также сгенерировать файл composer.json для проекта:

      • composer require cocur/slugify

      Вы увидите следующий вывод, когда Composer загрузит зависимость:

      Output

      Using version ^3.1 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 (v3.1): Downloading (100%) Writing lock file Generating autoload files

      Как видите, Composer автоматически определил, какую версию пакета использовать. Если вы сейчас проверите каталог вашего проекта, он будет содержать два новых файла: composer.json и composer.lock, а также каталог vendor.

      Output

      total 12 -rw-rw-r-- 1 sammy sammy 59 Jul 11 16:40 composer.json -rw-rw-r-- 1 sammy sammy 2934 Jul 11 16:40 composer.lock drwxrwxr-x 4 sammy sammy 4096 Jul 11 16:40 vendor

      Файл composer.lock используется для хранения информации о том, какие версии каждого пакета установлены, а также для использования одних и тех же версий пакетов, если кто-либо будет клонировать ваш проект и устанавливать зависимости. Каталог vendor служит местом расположения зависимостей проекта. Папка vendor не обязательно будет использоваться для контроля версий, вы должны поместить туда только файлы composer.json и composer.lock.

      При установке проекта, который уже содержит файл composer.json, запустите composer install, чтобы загрузить зависимости проекта.

      Давайте быстро пробежимся по ограничениям версии. Если вы просмотрите содержимое файла composer.json, то увидите следующее:

      Output

      { "require": { "cocur/slugify": "^3.1" } } sam

      Вы можете заметить специальный символ ^ перед номером версии в файле composer.json. Composer поддерживает несколько ограничений и форматов для определения требуемой версии пакета, чтобы обеспечить гибкость и одновременно сохранить стабильность вашего проекта. Оператор карет ​​(^), используемый в автоматически генерируемом файле composer.json, рекомендуется применять для обеспечения максимальной совместимости в соответствии с семантическим управлением версиями. В данном случае он определяет 3.1 в качестве минимальной совместимой версии и позволяет обновляться до любой будущей версии ниже 4.0.

      Как правило, вам не нужно изменять ограничения версии в файле composer.json. Однако в некоторых ситуациях может потребоваться вручную отредактировать ограничения для экземпляра, например, при выходе крупного обновления требуемой библиотеки, а также в случае, когда библиотека, которую вы хотите использовать, не соответствует требованиям семантического управления версиями.

      Ниже представлены примеры, которые помогут лучше понять, как работают ограничения версии в Composer:

      Ограничение Значение Пример допустимых версий
      ^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

      Более подробное описание ограничений версии в Composer см. в официальной документации.

      Теперь нужно рассмотреть, как автоматически загружать зависимости с помощью Composer.

      Шаг 4 — Включение скрипта автозагрузки

      Поскольку PHP не загружает классы автоматически, Composer предоставляет скрипт автозагрузки, который можно включить в ваш проект, чтобы использовать автозагрузку бесплатно. Это значительно упрощает работу с зависимостями.

      Вам нужно будет только включить файл vendor/autoload.php в скрипты PHP перед созданием экземпляра любого класса. Composer автоматически генерирует этот файл при добавлении первой зависимости.

      Давайте попробуем сделать это в нашем приложении. Создайте файл test.php и откройте его в текстовом редакторе:

      Добавьте следующий код, который будет подключать файл vendor/autoload.php, загружать зависимость cocur/slugify и использовать ее для создания понятной человеку части URL-адреса:

      test.php

      <?php
      require __DIR__ . '/vendor/autoload.php';
      
      use CocurSlugifySlugify;
      
      $slugify = new Slugify();
      
      echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
      

      Сохраните файл и закройте редактор.

      Запустите скрипт:

      Вы должны получить вывод hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it.

      Зависимости нуждаются в обновлениях при выходе новых версий, так что давайте рассмотрим, как решить эту проблему.

      Шаг 5 — Обновление зависимостей проекта

      Если вам нужно обновить зависимости проекта на более поздние версии, запустите команду update:

      Она будет проверять новые версии библиотек, которые требуются вам в вашем проекте. Если будет найдена новая версия, которая совместима с ограничением версии, определенным в файле composer.json, Composer заменит ранее установленную версию на новую. Файл composer.lock будет обновлен, чтобы отразить эти изменения.

      Вы также можете обновить одну или несколько конкретных библиотек, указав их следующим образом:

      • composer update vendor/package vendor2/package2

      Обязательно проверьте файлы composer.json и composer.lock после обновления зависимостей, чтобы другие тоже могли установить обновленные версии.

      Заключение

      Composer — это мощный инструмент, который должен быть в арсенале каждого разработчика PHP. В этом обучающем руководстве вы установили Composer и использовали его при создании простого проекта. Теперь вы умеете устанавливать и обновлять зависимости.

      Помимо обеспечения удобного и надежного способа управления зависимостями проекта, этот инструмент задает новый стандарт для обмена и обнаружения пакетов PHP, созданных сообществом.



      Source link