序章

Composer は、PHP用の人気のある依存関係管理ツールであり、主にプロジェクトの依存関係のインストールと更新を容易にするために作成されました。 特定のプロジェクトが依存している他のパッケージをチェックし、プロジェクトの要件に応じて適切なバージョンを使用してそれらをインストールします。

このチュートリアルでは、Ubuntu16.04システムにComposerをインストールして使用を開始する方法について説明します。

前提条件

このチュートリアルでは、次のものが必要になります。

  • Ubuntu16.04を実行しているシステム
  • sudo権限を持つ通常のユーザーとしてサーバーにアクセスする

ステップ1—依存関係のインストール

Composerをダウンロードしてインストールする前に、サーバーにすべての依存関係がインストールされていることを確認する必要があります。

まず、以下を実行してパッケージマネージャーのキャッシュを更新します。

  1. sudo apt-get update

それでは、依存関係をインストールしましょう。 必要になります curl Composerをダウンロードするために php-cli それをインストールして実行するため。 The php-mbstring パッケージは、使用するライブラリの関数を提供するために必要です。 git プロジェクトの依存関係をダウンロードするためにComposerによって使用されます。 unzip 圧縮されたパッケージを抽出するため。 次のコマンドですべてをインストールできます。

  1. sudo apt-get install curl php-cli php-mbstring git unzip

これで、次のステップに進むことができます。

ステップ2—Composerのダウンロードとインストール

Composerは、PHPで記述されたインストーラーを提供します。 ホームディレクトリにいることを確認し、を使用してインストーラーを取得します curl:

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

次に、短いPHPスクリプトを実行して、インストーラーが Composer Public Keys /Signaturesページにある最新のインストーラーのSHA-384ハッシュと一致することを確認します。 以下の強調表示された値を最新のハッシュに置き換える必要があります。

  1. php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
出力
Installer verified

インストールするには composer グローバルに、以下を使用します。

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

これにより、Composerがシステム全体のコマンドとしてダウンロードおよびインストールされます。 composer、 下 /usr/local/bin. 出力は次のようになります。

Output
All settings correct for using Composer Downloading 1.1.1... Composer successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer

インストールをテストするには、次を実行します。

  1. composer

そして、次のような出力が得られるはずです。

Output
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.1.1 2016-05-17 12:25:44 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. . . .

これは、Composerがシステムに正常にインストールされたことを意味します。

このサーバーでホストするプロジェクトごとに個別のComposer実行可能ファイルを使用する場合は、プロジェクトごとにローカルにインストールするだけです。 NPMのユーザーは、このアプローチに精通しています。 この方法は、システムユーザーがシステム全体にソフトウェアをインストールする権限を持っていない場合にも役立ちます。

この場合、上記のようにインストールスクリプトをダウンロードして確認した後、次のようにインストールを実行できます。

  1. php composer-setup.php

これにより、 composer.phar 現在のディレクトリ内のファイル。これは次のコマンドで実行できます。 ./composer.phar command.

ステップ3—composer.jsonファイルを生成する

プロジェクトでComposerを使用するには、 composer.json ファイル。 The composer.json fileは基本的に、プロジェクトにダウンロードする必要のある依存関係と、各パッケージのインストールが許可されているバージョンをComposerに通知します。 これは、プロジェクトの一貫性を維持し、下位互換性の問題を引き起こす可能性のある不安定なバージョンのインストールを回避するために非常に重要です。

このファイルを手動で作成する必要はありません。作成すると、構文エラーが発生しやすくなります。 Composerは自動生成します composer.json を使用してプロジェクトに依存関係を追加するときのファイル require 指図。 このファイルを手動で編集しなくても、同じ方法で依存関係を追加することもできます。

Composerを使用してプロジェクトの依存関係としてパッケージをインストールするプロセスには、通常、次の手順が含まれます。

  • アプリケーションに必要なライブラリの種類を特定する
  • Composerの公式パッケージリポジトリであるPackagist.orgで適切なオープンソースライブラリを調べてください
  • 依存したいパッケージを選択してください
  • 走る composer require に依存関係を含めるには composer.json ファイルを作成してパッケージをインストールします

簡単なデモアプリケーションを使用して、これが実際にどのように機能するかを見ていきます。

このアプリケーションの目的は、特定の文をURLに適した文字列( slug)に変換することです。 これは通常、ページタイトルをURLパスに変換するために使用されます(このチュートリアルのURLの最後の部分など)。

プロジェクトのディレクトリを作成することから始めましょう。 これをslugifyと呼びます。

  1. cd ~
  2. mkdir slugify
  3. cd slugify

Packagistでパッケージを検索する

次に、 Package.org を検索して、slugsの生成に役立つパッケージを探します。 Packagistで「スラッグ」という用語を検索すると、次のような結果が得られます。

リストの各パッケージの右側に2つの数字が表示されます。 上部の数字はパッケージがインストールされた回数を表し、下部の数字はパッケージがGitHubでスターされた回数を示します。 これらの番号に基づいて検索結果を並べ替えることができます(検索バーの右側にある2つのアイコンを探します)。 一般的に言って、インストール数と星数が多いパッケージは、非常に多くの人が使用しているため、より安定する傾向があります。 パッケージの説明に関連性があるかどうかを確認することも重要です-それは本当にあなたが探しているものですか?

必要なのは、単純なストリングからスラグへのコンバーターです。 検索結果から、パッケージ cocur/slugify 適度な量のインスタレーションとスターがあり、良い一致のようです。 (パッケージは、スクリーンショットが示すよりもページの少し下にあります。)

Packagistのパッケージには、ベンダーの名前とパッケージの名前が付いています。 各パッケージには、GitHubがリポジトリに使用するのと同じ形式の一意の識別子(名前空間)があります。 vendor/package. インストールするライブラリは名前空間を使用します cocur/slugify 名前空間は、プロジェクトでパッケージを要求するために必要なものです。

パッケージが必要

インストールするパッケージが正確にわかったので、実行できます composer require それを依存関係として含め、また生成する composer.json プロジェクトのファイル:

  1. composer require cocur/slugify
Output
Using version ^2.1 for cocur/slugify ./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) - Installing cocur/slugify (v2.1.1) Downloading: 100% Writing lock file Generating autoload files

出力からわかるように、Composerはパッケージのどのバージョンを使用するかを自動的に決定しました。 ここでプロジェクトのディレクトリを確認すると、2つの新しいファイルが含まれています。 composer.jsoncomposer.lock、および vendor ディレクトリ:

  1. ls -l
Output
total 12 -rw-rw-r-- 1 sammy sammy 59 May 17 10:24 composer.json -rw-rw-r-- 1 sammy sammy 2894 May 17 10:24 composer.lock drwxrwxr-x 4 sammy sammy 4096 May 17 10:24 vendor

The composer.lock fileは、各パッケージのインストールされているバージョンに関する情報を格納するために使用されます。他の誰かがプロジェクトのクローンを作成してその依存関係をインストールする場合は、同じバージョンが使用されていることを確認してください。 The vendor ディレクトリは、プロジェクトの依存関係が配置されている場所です。 The vendor フォルダはではなくバージョン管理にコミットする必要があります。必要なのはcomposer.jsonファイルとcomposer.lockファイルのみです。

すでに含まれているプロジェクトをインストールする場合 composer.json ファイル、実行する必要があります composer install プロジェクトの依存関係をダウンロードするため。

バージョンの制約を理解する

内容を確認すれば composer.json ファイルの場合、次のように表示されます。

  1. cat composer.json
  1. Output
    {
  2. "require": {
  3. "cocur/slugify": "^2.1"
  4. }
  5. }

特殊文字に気付くかもしれません ^ のバージョン番号の前 composer.json. Composerは、プロジェクトを安定させながら柔軟性を提供するために、必要なパッケージバージョンを定義するためのいくつかの異なる制約と形式をサポートしています。 キャレット(^)自動生成された演算子によって使用されます composer.json ファイルは、セマンティックバージョニングに続いて、相互運用性を最大化するために推奨される演算子です。 この場合、互換性のある最小バージョンとして 2.1 を定義し、3.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のバージョン制約の詳細については、公式ドキュメントを参照してください。

ステップ4—自動ロードスクリプトを含める

PHP自体はクラスのロードを自動的に処理しないため、Composerは、プロジェクトに含めて自動ロードを無料で取得できる自動ロードスクリプトも提供します。 これにより、依存関係の操作と独自の名前付けの定義がはるかに簡単になります。

あなたがする必要がある唯一のことは含めることです vendor/autoload.php クラスのインスタンス化の前に、PHPスクリプトでファイルを作成します。

slugifyサンプルアプリケーションに戻りましょう。 使用します nano を作成するには test.php cocur / slugify ライブラリを使用するスクリプト:

  1. nano test.php
test.php
  1. <?php
  2. require __DIR__ . '/vendor/autoload.php';
  3. use Cocur\Slugify\Slugify;
  4. $slugify = new Slugify();
  5. echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');

次のコマンドラインでスクリプトを実行できます。

  1. php test.php

これにより、出力が生成されます hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it.

ステップ5—プロジェクトの依存関係を更新する

プロジェクトの依存関係を更新するときはいつでも、を実行する必要があります update 指図:

  1. composer update

これにより、プロジェクトで必要なライブラリの新しいバージョンがチェックされます。 新しいバージョンが見つかり、それがで定義されたバージョン制約と互換性がある場合 composer.json ファイル、それはインストールされた前のバージョンを置き換えます。 The composer.lock これらの変更を反映するようにファイルが更新されます。

次のコマンドを実行して、1つ以上の特定のライブラリを更新することもできます。

  1. composer update vendor/package vendor2/package2

結論

このチュートリアルでは、Ubuntu16.04でComposerを使い始めるための基本事項について説明しました。 Composerは、すべてのPHP開発者がユーティリティベルトに持つべき強力なツールです。

プロジェクトの依存関係を管理するための簡単で信頼性の高い方法を提供するだけでなく、コミュニティによって作成されたPHPパッケージを共有および検出するための新しいデファクトスタンダードも確立します。