前書き

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

このチュートリアルでは、Debian 8サーバーにComposerをインストールして開始する方法を示します。

前提条件

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

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

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

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

sudo apt-get update

それでは、依存関係をインストールしましょう。 ComposerとPHPパッケージである `+ php5-cli `をダウンロードしてインストールして実行するには、 ` curl `が必要です。 Composerは、バージョン管理システムである ` git +`を使用して、プロジェクトの依存関係をダウンロードします。 次のコマンドを使用すると、これら3つのパッケージすべてを一度にインストールできます。

sudo apt-get install curl php5-cli git

必須の依存関係がインストールされたので、次に進み、Composer自体をインストールします。

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

Composerの公式ドキュメントに記載されている手順に従い、Composerを「+ / usr / local / bin +」の下にグローバルにインストールするための小さな変更を加えます。 これにより、サーバー上のすべてのユーザーがComposerを使用できるようになります。

インストーラーを `+ / tmp +`ディレクトリにダウンロードします。

php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"

https://composer.github.io/pubkeys.html [作曲者の公開鍵と署名のページ]にアクセスし、上部の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のWebサイトから正しいハッシュでダウンロードしたファイルのハッシュをチェックします。 一致する場合は、* Installer verify と印刷されます。 一致しない場合は、 Installer broken *と印刷されます。この場合、SHA-384文字列を正しくコピーしたことを再確認する必要があります。

次に、Composerをインストールします。 `+ / usr / local / bin `の下にグローバルにインストールするには、 `-install-dir `フラグを使用します。 `-filename +`は、インストーラにComposerの実行可能ファイルの名前を伝えます。 これを1つのコマンドで行う方法は次のとおりです。

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が正しくインストールされていることを確認できます。

composer --version

インストールされたバージョンが表示されます。 この記事の執筆時点では、バージョンは次のとおりです。

Composerバージョン

Composer version 1.3.2 2017-01-27 18:23:41

最後に、インストーラースクリプトは不要になったため、安全に削除できます。

rm /tmp/composer-setup.php

Composerがセットアップおよび実行され、プロジェクトで使用されるのを待機しています。 次のセクションでは、プロジェクトが依存するPHPライブラリを含む `+ composer.json +`ファイルを生成します。

ステップ3-composer.jsonファイルの生成

Composerをプロジェクトに使用するには、 `+ composer.json`ファイルが必要です。 `+ composer.json`ファイルは、プロジェクトにダウンロードする必要がある依存関係と、インストールが許可されている各パッケージのバージョンをComposerに伝えます。 これは、プロジェクトの一貫性を保ち、下位互換性の問題を引き起こす可能性のある不安定なバージョンのインストールを避けるために重要です。

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

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

  • アプリケーションに必要なライブラリの種類を特定する

  • Composerの公式リポジトリであるhttps://packagist.org/[Packagist.org]で適切なオープンソースライブラリを調べます。

  • 依存したいパッケージを選択してください

  • + composer.json`ファイルに依存関係を含めるために + composer require`を実行し、パッケージをインストールします

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

このアプリケーションの目標は、与えられた文を_slug_に変換することです。これはURLに優しい文字列です。 これは、ページタイトルをURLパス(このチュートリアルのURLの最後の部分など)に変換するために使用されます。

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

cd ~
mkdir slugify
cd slugify

次に、使用する必要があるライブラリを検索しましょう。

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

次に、Slugsの生成に役立つパッケージをhttps://packagist.org/[Packagist]で検索します。 「slug」を検索すると、パッケージのリストが表示されます。 リストの各パッケージの右側には、2つの数字が表示されます。上の数字はパッケージがインストールされた回数、下の数字はパッケージが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は使用するパッケージのバージョンを自動的に決定しました。 ここでプロジェクトのディレクトリを確認すると、2つの新しいファイル「+ 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 *より下の将来のバージョンへの更新を許可します。 バージョンの理論的根拠の詳細については、https://getcomposer.org/doc/articles/versions.md [Composerのバージョン管理ドキュメント]をご覧ください。

これまで、 `+ composer.json `ファイルを使用して、Composerでプロジェクトに必要なPHPライブラリを追加および制限する方法を見てきました。 次のステップは、アプリケーション内でこれらのライブラリを実際に使用することです。 その目的のために、Composerは外部ライブラリをロードするプロセスを容易にする ` autoload.php +`ファイルを提供します。

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

Composerには、プロジェクトに含めることができる自動ロードスクリプトが用意されており、無料で自動ロードを実行できます。 これにより、依存関係を操作し、独自の名前空間を定義することがはるかに簡単になります。 行う必要があるのは、クラスのインスタンス化の前にPHPスクリプトに `+ vendor / autoload.php`ファイルを含めることだけです。

「+ slugify 」サンプルアプリケーションに戻りましょう。 ` nano `またはお気に入りのテキストエディタを使用して、 ` cocur / slugify`ライブラリを使用する` + test.php`スクリプトを作成します。

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およびプロジェクトの依存関係の更新(オプション)

Composer自体を更新するには、組み込みコマンド `+ self-update +`を使用できます。 Composerはグローバルにインストールされるため、root権限でコマンドを実行する必要があります。

sudo -H composer self-update

`+ composer update`で具体的にリストすることで、1つ以上の特定のライブラリを更新できます。

composer update /

プロジェクトのすべての依存関係を更新する場合は、 `+ update`コマンドを実行します。

composer update

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

結論

Composerは、すべてのPHP開発者がユーティリティベルトに持つべき強力なツールです。 プロジェクトの依存関係を管理する簡単で信頼できる方法を提供するだけでなく、コミュニティによって作成されたPHPパッケージを共有および検出するための新しい事実上の標準も確立します。

このチュートリアルでは、Composerの基本を簡単に説明しました。インストール方法、プロジェクトの作成方法とそのパッケージの検索方法、およびメンテナンス方法です。 詳細については、https://getcomposer.org/doc/ [Composerの公式ドキュメント]をご覧ください。