One place for hosting & domains

      Composer

      Como Instalar e Utilizar o Composer no Ubuntu 20.04


      Introdução

      O Composer é uma ferramenta popular de gerenciamento de dependências para o PHP, criado principalmente para facilitar a instalação e a atualização das dependências do projeto. Ele verificará de quais outros pacotes um projeto específico depende e os instalará para você, usando as versões apropriadas de acordo com os requisitos do projeto. O Composer também é comumente utilizado para inicializar novos projetos baseados em frameworks PHP populares, como o Symfony e o Laravel.

      Neste tutorial, você instalará e começará a utilizar o Composer em um sistema Ubuntu 20.04.

      Pré-requisitos

      Para seguir este guia, você precisará de acesso a um servidor Ubuntu 20.04 como um usuário sudo não-root e um firewall habilitado em seu servidor. Para configurar isto, siga nosso guia Configuração do servidor inicial para o Ubuntu 20.04

      Passo 1 — Instalando o PHP e as Dependências Adicionais

      Além das dependências que já devem estar incluídas em seu sistema Ubuntu 20.04, como o git e o curl, o Composer exige o php-cli para executar scripts PHP na linha de comando e o unzip para extrair arquivos zipados. Vamos instalar essas dependências agora.

      Primeiro, atualize o cache do gerenciador de pacotes executando:

      Em seguida, execute o seguinte comando para instalar os pacotes necessários:

      • sudo apt install php-cli unzip

      Você será solicitado a confirmar a instalação digitando Y e, depois, ENTER.

      Assim que os pré-requisitos estiverem instalados, você pode seguir para a instalação do Composer.

      Passo 2 — Baixando e Instalando o Composer

      O Composer fornece um script installer escrito em PHP. Vamos baixá-lo, verificar se ele não está corrompido e, em seguida, o usaremos para instalar o Composer.

      Certifique-se de estar em seu diretório home. Em seguida, baixe o instalador usando o curl:

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

      Em seguida, vamos verificar se o instalador baixado corresponde ao hash SHA-384 para o instalador mais recente encontrado na página Composer Public Keys / Signatures. Para facilitar o passo de verificação, você pode utilizar o seguinte comando para obter programaticamente o hash mais recente da página do Composer e armazená-lo em uma variável de shell:

      • HASH=`curl -sS https://composer.github.io/installer.sig`

      Se você quiser verificar o valor obtido, execute:

      Output

      e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a

      Agora, execute o código PHP a seguir, conforme fornecido na página de download do Composer, para verificar se o script de instalação está seguro para ser executado:

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

      Você verá o seguinte resultado:

      Output

      Installer verified
      

      Se a saída diz Installer corrupt,você precisará baixar o script de instalação novamente e verificar se você está usando o hash correto. Em seguida, repita o processo de verificação. Quando você tiver um instalador verificado, você pode continuar.

      Para instalar o composer globalmente, use o seguinte comando que baixará e instalará o Composer como um comando disponível em todo o sistema chamado composer, sob /usr/local/bin:

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

      Você verá um resultado parecido com este:

      Output

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

      Para testar a sua instalação, execute:

      Output

      ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ / __ `__ / __ / __ / ___/ _ / ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / ____/____/_/ /_/ /_/ .___/____/____/___/_/ /_/ Composer version 1.10.5 2020-04-10 11:44:22 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. --no-cache Prevent use of the cache -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug ...

      Isso verifica que o Composer foi instalado com sucesso em seu sistema e está disponível em todo o sistema.

      Nota: se você preferir ter executáveis separados do Composer para cada projeto hospedado neste servidor, você pode instalá-lo localmente, em uma base por projeto. Este método também é útil quando seu usuário de sistema não possui permissão para instalar software disponível em todo o sistema.

      Para fazer isso, use o comando php composer-setup.php. Isso irá gerar um arquivo composer.phar em seu diretório atual, que pode ser executado com php composer.phar.

      Agora vamos dar uma olhada em como utilizar o Composer para gerenciar as dependências.

      Passo 3 — Usando o Composer em um Projeto PHP

      Os projetos PHP geralmente dependem de bibliotecas externas, e o gerenciamento dessas dependências e suas versões pode ser complicado. O Composer resolve esse problema mantendo o controle de versões e dependências do projeto, enquanto também facilita o processo de descoberta, instalação e atualização de pacotes que são necessários por um projeto.

      Para utilizar o Composer em seu projeto, você precisará de um arquivo composer.json. O arquivo composer.json informa ao Composer quais dependências ele precisa baixar para seu projeto e quais versões de cada pacote tem permissão para serem instaladas. Isso é muito importante para manter seu projeto consistente e evitar instalar versões instáveis que podem causar problemas de compatibilidade retroativa.

      Você não precisa criar este arquivo manualmente – é comum ocorrerem erros de sintaxe quando fizer isso. O Composer oferece uma maneira interativa de criar um novo arquivo composer.json com base na entrada do usuário, o que é uma boa escolha se você planeja compartilhar seu projeto mais tarde como um pacote público no Packagist. O Composer também gera automaticamente um arquivo básico composer.json quando você executa um comando composer require para incluir uma dependência em um projeto recém-criado.

      O processo de utilizar o Composer para instalar um pacote como uma dependência em um projeto envolve os passos a seguir:

      • Identifique o tipo de biblioteca que o aplicativo precisa.
      • Pesquise uma biblioteca de código aberto adequada no Packagist.org, o repositório oficial de pacotes para o Composer.
      • Escolha o pacote de dependência.
      • Execute composer require para incluir a dependência no arquivo composer.json e instalar o pacote.

      Vamos testar isso com uma aplicação de demonstração.

      O objetivo desta aplicação é transformar uma determinada sentença em uma string de URL amigável – um slug. Isso é comumente usado para converter os títulos de página para caminhos de URL (Assim como a parte final da URL para este tutorial).

      Vamos começar criando um diretório para o nosso projeto. Vamos chamá-lo de slugify:

      • cd ~
      • mkdir slugify
      • cd slugify

      Embora não seja necessário, você pode executar agora um comando composer init para criar um arquivo composer.json detalhado para seu projeto. Como o único objetivo do nosso projeto é demonstrar como instalar dependências com o Composer, usaremos um arquivo composer.json mais simples que será gerado automaticamente quando exigirmos nosso primeiro pacote.

      Agora é hora de procurar no Packagist.org por um pacote que pode nos ajudar a gerar slugs. Se você procurar pelo termo “slug” no Packagist, receberá um resultado parecido com este:

      Packagist Search Results for the term

      Você verá dois números no lado direito de cada pacote na lista. O número no topo representa quantas vezes o pacote foi instalado através do Composer, e o número em baixo mostra quantas vezes um pacote foi estrelado no GitHub. De um modo geral, os pacotes com mais instalações e mais estrelas tendem a ser mais estáveis, pois mais pessoas os utilizam. Também é importante verificar a descrição do pacote para relevância para garantir que ele é o que você precisa.

      Precisamos de um conversor string-to-slug A partir dos resultados da pesquisa, o pacote cocur/slugify, que aparece como o primeiro resultado naquela página, parece ser um bom candidato, com uma quantidade razoável de instalações e estrelas.

      Os pacotes no Packagist têm um nome de vendor e um nome de package. Cada pacote tem um identificador único (um namespace) no mesmo formato que o GitHub utiliza para seus repositórios: vendor/package. A biblioteca que queremos instalar utiliza o namespace cocur/slugify. Você precisa de um namespace do pacote para exigi-lo em seu projeto.

      Agora que você sabe exatamente qual pacote deseja instalar, você pode executar o composer require para incluí-lo como uma dependência e gerar também o arquivo composer.json para seu projeto. Uma coisa importante é observar a exigência de pacotes. O Composer rastreia as dependências no nível da aplicação e do sistema. As dependências no nível do sistema são importantes para indicar de quais módulos PHP um pacote depende. No caso do pacote cocur/slugify, ele exige um módulo PHP que ainda não instalamos.

      Quando um pacote necessário depende de uma biblioteca de sistema que não está atualmente instalada em seu servidor, você receberá um erro informando qual requisito está faltando:

      • composer require cocur/slugify

      Output

      Using version ^4.0 for cocur/slugify ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for cocur/slugify ^4.0 -> satisfiable by cocur/slugify[v4.0.0]. - cocur/slugify v4.0.0 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system. ...

      Para resolver o problema de dependência do sistema, podemos procurar pelo pacote que falta usando o apt search:

      Output

      Sorting... Done Full Text Search... Done php-mbstring/focal 2:7.4+75 all MBSTRING module for PHP [default] php-patchwork-utf8/focal 1.3.1-1 all UTF-8 strings handling for PHP php7.4-mbstring/focal 7.4.3-4ubuntu1 amd64 MBSTRING module for PHP

      Após localizar o nome do pacote correto, você pode utilizar o apt novamente para instalar a dependência de sistema:

      • sudo apt install php-mbstring

      Assim que a instalação terminar, você pode executar novamente o comando composer require:

      • composer require cocur/slugify

      Output

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

      Como você pode ver na saída, o Composer decidiu automaticamente qual versão do pacote utilizar. Se você verificar o diretório do seu projeto agora, ele irá conter dois arquivos novos: composer.json e composer.lock, e um diretório vendor:

      Output

      total 12 -rw-rw-r-- 1 sammy sammy 59 May 4 13:56 composer.json -rw-rw-r-- 1 sammy sammy 3229 May 4 13:56 composer.lock drwxrwxr-x 4 sammy sammy 4096 May 4 13:56 vendor

      O arquivo composer.lock é usado para armazenar informações sobre quais versões de cada pacote estão instaladas, e garantir que as mesmas versões sejam usadas se outra pessoa clonar seu projeto e instalar suas dependências. O diretório vendor é onde as dependências do projeto estão localizadas. Você não deve fazer commit da pasta vendor no controle de versão – você precisa apenas incluir os arquivos composer.json e composer.lock.

      Ao instalar um projeto que já contém um arquivo composer.json, execute o composer install para baixar as dependências do projeto.

      Vamos dar uma olhada rápida em restrições de versão. Se você verificar o conteúdo do seu arquivo composer.json, verá algo parecido com isto:

      Output

      { "require": { "cocur/slugify": "^4.0" } }

      Note que há o caractere especial ^ antes do número da versão no composer.json. O Composer suporta várias restrições diferentes e formatos para definir a versão necessária do pacote, para fornecer flexibilidade enquanto também mantém seu projeto estável. O operador circunflexo (^) utilizado pelo arquivo composer.json criado automaticamente é o operador recomendado para a interoperabilidade máxima, seguindo o versionamento semântico. Neste caso, ele define 4.0 como a versão mínima compatível e permite atualizações para qualquer versão futura abaixo de 5.0.

      De um modo geral, você não precisará alterar as restrições de versão em seu arquivo composer.json. No entanto, algumas situações podem exigir que você edite manualmente as restrições – por exemplo, quando uma nova versão principal da sua biblioteca requerida é liberada e você deseja atualizar, ou quando a biblioteca que você deseja usar não segue o versionamento semântico.

      Aqui estão alguns exemplos para lhe dar um melhor entendimento sobre como as restrições de versão do Composer funcionam:

      RestriçãoSignificadoExemplo de Versões Permitidas
      ^1.0>= 1.0 < 2.01.0, 1.2.3, 1.9.9
      ^1.1.0>= 1.1.0 < 2.01.1.0, 1.5.6, 1.9.9
      ~1.0>= 1.0 < 2.0.01.0, 1.4.1, 1.9.9
      ~1.0.0>= 1.0.0 < 1.11.0.0, 1.0.4, 1.0.9
      1.2.11.2.11.2.1
      1.*>= 1.0 < 2.01.0.0, 1.4.5, 1.9.9
      1.2. *>= 1.2 < 1.31.2.0, 1.2.3, 1.2.9

      Para uma visualização mais detalhada das restrições de versão do Composer, consulte a documentação oficial.

      A seguir, vamos ver como carregar dependências automaticamente com o Composer.

      Passo 4 — Incluindo o Script Autoload

      Como o PHP por si só não carrega classes automaticamente, o Composer fornece um script autoload que você pode incluir em seu projeto para obter o carregamento automático para ele. Este arquivo é gerado automaticamente pelo Composer quando você adiciona sua primeira dependência.

      A única coisa que você precisa fazer é incluir o arquivo vendor/autoload.php em seus scripts PHP antes de qualquer instância de classe.

      Vamos testar isso em nossa aplicação de demonstração. Abra um novo arquivo chamado test.php em seu editor de texto:

      Adicione o código a seguir que vem no arquivo vendor/autoload.php, carrega a dependência cocur/slugify, e o utiliza para criar um slug:

      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!');
      

      Salve o arquivo e saia do seu editor.

      Agora, execute o script.

      Isso produz a saída hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it.

      As dependências precisam de atualizações quando novas versões são liberadas. Dessa forma, vamos ver como lidar com isso.

      Passo 5 — Atualizando as Dependências do Projeto

      Sempre que você quiser atualizar suas dependências do projeto para versões mais recentes, execute o comando update:

      Isso irá verificar por versões mais recentes das bibliotecas que você requer em seu projeto. Se uma versão mais recente for encontrada e ela for compatível com a restrição de versão definida no arquivo composer.json, o Composer substituirá a versão anterior instalada. O arquivo composer.lock será atualizado para refletir essas alterações.

      Você também pode atualizar uma ou mais bibliotecas específicas, especificando-as desta forma:

      • composer update vendor/package vendor2/package2

      Certifique-se de verificar em seus arquivos composer.json e composer.lock dentro do seu sistema de controle de versão após atualizar suas dependências de modo que outros também possam instalar essas versões mais recentes.

      Conclusão

      O Composer é uma ferramenta poderosa que facilita o trabalho de gerenciar as dependências em projetos PHP. Ele fornece uma maneira confiável de descobrir, instalar e atualizar pacotes PHP dos quais um projeto depende. Neste guia, vimos como instalar o Composer, como incluir novas dependências em um projeto, e como atualizar essas dependências assim que as novas versões estiverem disponíveis.



      Source link

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


      Введение

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

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

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

      Для прохождения этого обучающего модуля вам потребуется доступ к серверу Ubuntu 20.04 на уровне sudo без привилегий root и включенный на сервере брандмауэр. Чтобы выполнить настройку, воспользуйтесь руководством по первоначальной настройке сервера Ubuntu 20.04.

      Шаг 1 — Установка PHP и необходимых зависимостей

      В дополнение к зависимостям, уже входящим в комплект системы Ubuntu 20.04, таким как git и curl, Composer требует php-cli для выполнения скриптов PHP в командной строке и unzip для распаковки архивов. Сейчас мы установим эти зависимости.

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

      Запустите следующую команду для установки требуемых пакетов:

      • sudo apt install php-cli unzip

      Для подтверждения установки введите Y и нажмите ENTER.

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

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

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

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

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

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

      • HASH=`curl -sS https://composer.github.io/installer.sig`

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

      Output

      e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a

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

      • 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.10.5) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer

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

      Output

      ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ / __ `__ / __ / __ / ___/ _ / ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / ____/____/_/ /_/ /_/ .___/____/____/___/_/ /_/ Composer version 1.10.5 2020-04-10 11:44:22 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. --no-cache Prevent use of the cache -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug ...

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

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

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

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

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

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

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

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

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

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

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

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

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

      • cd ~
      • mkdir slugify
      • cd slugify

      Хотя это не требуется, вы можете запустить команду composer init для создания детального файла composer.json для вашего проекта. Поскольку единственная цель нашего проекта — продемонстрировать установку зависимостей на Composer, мы используем более простой файл composer.json, который будет сгенерирован автоматически, когда нам потребуется наш первый пакет.

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

      Результаты поиска в Packagist по ключевому слову «slug»

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

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

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

      Теперь, когда вы знаете, какой пакет хотите установить, запустите composer require, чтобы добавить его в качестве зависимости, а также сгенерировать файл composer.json для вашего проекта. При запросе пакетов важно учитывать, что Composer отслеживает как зависимости на уровне приложений, так и зависимости на уровне системы. Зависимости на уровне системы важны, чтобы показать, на какие модули PHP полагается пакет. Для пакета cocur/slugify требуется модуль PHP, который мы еще не установили.

      Если требуемый пакет использует системную библиотеку, которая еще не установлена на вашем сервере, вы получите сообщение об ошибке с указанием невыполненного требования:

      • composer require cocur/slugify

      Output

      Using version ^4.0 for cocur/slugify ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for cocur/slugify ^4.0 -> satisfiable by cocur/slugify[v4.0.0]. - cocur/slugify v4.0.0 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system. ...

      Для решения проблемы с системной зависимостью мы можем выполнить поиск отсутствующего пакета с помощью apt search:

      Output

      Sorting... Done Full Text Search... Done php-mbstring/focal 2:7.4+75 all MBSTRING module for PHP [default] php-patchwork-utf8/focal 1.3.1-1 all UTF-8 strings handling for PHP php7.4-mbstring/focal 7.4.3-4ubuntu1 amd64 MBSTRING module for PHP

      Определив правильное имя пакета, вы можете использовать apt еще раз для установки системной зависимости:

      • sudo apt install php-mbstring

      После завершения установки вы можете запустить команду composer require еще раз:

      • composer require cocur/slugify

      Output

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

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

      Output

      total 12 -rw-rw-r-- 1 sammy sammy 59 May 4 13:56 composer.json -rw-rw-r-- 1 sammy sammy 3229 May 4 13:56 composer.lock drwxrwxr-x 4 sammy sammy 4096 May 4 13:56 vendor

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

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

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

      Output

      { "require": { "cocur/slugify": "^4.0" } }

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

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

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

      ОграничениеЗначениеПример допустимых версий
      ^1.0>= 1.0 < 2.01.0, 1.2.3, 1.9.9
      ^1.1.0>= 1.1.0 < 2.01.1.0, 1.5.6, 1.9.9
      ~1.0>= 1.0 < 2.0.01.0, 1.4.1, 1.9.9
      ~1.0.0>= 1.0.0 < 1.11.0.0, 1.0.4, 1.0.9
      1.2.11.2.11.2.1
      1.*>= 1.0 < 2.01.0.0, 1.4.5, 1.9.9
      1.2. *>= 1.2 < 1.31.2.0, 1.2.3, 1.2.9

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

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

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

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

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

      Протестируем его в нашем демонстрационном приложении. Откройте в текстовом редакторе новый файл с именем 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. Он дает надежный способ обнаружения, установки и обновления пакетов PHP, от которых зависит проект. В этом обучающем модуле мы узнали, как установить Composer, как включить в проект новые зависимости и как обновлять эти зависимости при выходе новых версий.



      Source link

      How To Install Composer on Ubuntu 20.04 [Quickstart]


      Introduction

      In this quickstart guide, we’ll install Composer on an Ubuntu 20.04 server.

      For a more detailed version of this tutorial, with more explanations of each step, please refer to How To Install and Use Composer on Ubuntu 20.04.

      Prerequisites

      To follow this guide, you’ll need access to an Ubuntu 20.04 server as a sudo user.

      Step 1 — Install Dependencies

      Start by updating your package manager cache and installing the required dependencies, including php-cli:

      • sudo apt update
      • sudo apt install php-cli unzip

      Step 2 — Download and Install Composer

      Make sure you’re in your home directory, then retrieve the Composer installer using curl:

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

      Next, we’ll verify that the downloaded installer matches the SHA-384 hash for the latest installer found on the Composer Public Keys / Signatures page.

      Using curl, fetch the latest signature and store it in a shell variable:

      • HASH=`curl -sS https://composer.github.io/installer.sig`

      Now execute the following PHP code to verify that the installation script is safe to run:

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

      You’ll see the following output:

      Output

      Installer verified
      

      Note: If the output says Installer corrupt, you’ll need to repeat the download and verification process until you have a verified installer.

      The following command will download and install Composer as a system-wide command named composer, under /usr/local/bin:

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

      You’ll see output similar to this:

      Output

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

      To test your installation, run:

      Output

      ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ / __ `__ / __ / __ / ___/ _ / ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / ____/____/_/ /_/ /_/ .___/____/____/___/_/ /_/ Composer version 1.10.5 2020-04-10 11:44:22 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. --no-cache Prevent use of the cache -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug ...

      This verifies that Composer was successfully installed on your system and is available system-wide.

      Here are links to more detailed guides related to this tutorial:



      Source link