前書き

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

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

前提条件

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

  • Ubuntu 14.04を実行しているサーバー

  • sudo permissionを使用して、通常のユーザーとしてサーバーにアクセスします

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

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

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

sudo apt-get update

それでは、依存関係をインストールしましょう。 Composerをダウンロードするには、「+ curl 」と、インストールおよび実行用の「 php5-cli 」が必要です。 Composerはプロジェクトの依存関係をダウンロードするために「 git +」を使用します。 すべては、次のコマンドでインストールできます。

sudo apt-get install curl php5-cli git

これで、次の手順に進むことができます。

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

Composerのインストールは本当に簡単で、1つのコマンドで実行できます。

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

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

Output#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

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

composer

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

Output   ______
 / ____/___  ____ ___  ____  ____  ________  _____
/ /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                   /_/
Composer version 1.0-dev (9859859f1082d94e546aa75746867df127aa0d9e) 2015-08-17 14:57:00

Usage:
command [options] [arguments]

Options:
--help (-h)           Display this help message
--quiet (-q)          Do not output any message
--verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version (-V)        Display this application version
--ansi                Force ANSI output
--no-ansi             Disable ANSI output
--no-interaction (-n) Do not ask any interactive question
--profile             Display timing and memory usage information
--working-dir (-d)    If specified, use the given directory as working directory.

. . .

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

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

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

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

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

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

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

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

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

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

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

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

cd ~
mkdir slugify
cd slugify

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

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

image:https://assets.digitalocean.com/articles/composer_1404/packagist.png [Packagist Search:easy-slug / easy-slug、muffin / slug、ddd / slug、zelenin / slug、webcastle / slug、anomaly / slug -field_type]

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

必要なのは、単純な文字列からスラグへのコンバータです。 検索結果から、パッケージ「+ cocur / slugify +」は、適切な量のインストールとスターを備えた、良好な一致のようです。 (パッケージは、スクリーンショットが示すよりもページの少し下にあります。)

Packagistのパッケージには* vendor 名と package 名があることに気づくでしょう。 各パッケージには、Githubがリポジトリに使用するのと同じ形式の一意の識別子(名前空間)があります: + vendor / package +。 インストールするライブラリは、名前空間 `+ cocur / slugify +`を使用します*名前空間は、プロジェクトでパッケージを必要とするために必要なものです。

パッケージを要求する

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

composer require cocur/slugify
OutputUsing version ^1.3 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
 - Installing cocur/slugify (v1.3)
   Downloading: 100%

Writing lock file
Generating autoload files

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

ls -l
Outputtotal 12
-rw-rw-r-- 1 sammy sammy   59 Sep  9 16:22 composer.json
-rw-rw-r-- 1 sammy sammy 2835 Sep  9 16:22 composer.lock
drwxrwxr-x 4 sammy sammy 4096 Sep  9 16:22 vendor

`+ composer.lock `ファイルは、各パッケージのどのバージョンがインストールされているかに関する情報を保存するために使用され、誰かがあなたのプロジェクトを複製して依存関係をインストールする場合、同じバージョンが使用されることを確認します。 ` vendor`ディレクトリはプロジェクトの依存関係が置かれている場所です。 `+ vendor +`フォルダーはバージョン管理に*コミット*しないでください-* composer.json および composer.lock *ファイルのみを含める必要があります。

バージョンの制約について

`+ composer.json`ファイルの内容を確認すると、次のように表示されます。

cat composer.json

composer.json

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

+ composer.json`のバージョン番号の前に特殊文字 + ^ + があることに気付くかもしれません。 Composerは、プロジェクトの安定性を保ちながら柔軟性を提供するために、必要なパッケージバージョンを定義するためのいくつかの異なる制約と形式をサポートしています。 自動生成された `+ composer.json +`ファイルによって使用されるキャレット( `+ ^ +)演算子は、http://semver.org/ [semantic versioning]に従って、最大限の相互運用性のために推奨される演算子です。 この場合、* 1.3 を互換性の最小バージョンとして定義し、 2.0 *より下の将来のバージョンへの更新を許可します。

一般的に、 `+ composer.json`ファイルのバージョンの制約を変更する必要はありません。 ただし、状況によっては、制約を手動で編集する必要がある場合があります。たとえば、必要なライブラリのメジャーな新しいバージョンがリリースされてアップグレードする場合、または使用するライブラリがセマンティックバージョニングに従っていない場合です。

Composerバージョンの制約がどのように機能するかをよりよく理解するための例をいくつか示します。

Constraint Meaning Example Versions Allowed

^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バージョンの制約のより詳細なビューについては、https://getcomposer.org/doc/articles/versions.md [公式ドキュメント]を確認してください。

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

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

行う必要があるのは、クラスのインスタンス化の前に、PHPスクリプトに `+ vendor / autoload.php`ファイルを含めることだけです。

_slugify_サンプルアプリケーションに戻りましょう。 _cocur / slugify_ライブラリを使用する `+ test.php +`スクリプトを作成します。

vim test.php

test.php

<?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

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

ステップ5-プロジェクトの依存関係の更新

プロジェクトの依存関係を更新したいときはいつでも、 `+ update`コマンドを実行するだけです:

composer update

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

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

composer update

結論

Composerは、すべてのPHP開発者がユーティリティベルトに持つべき強力なツールです。

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

このチュートリアルでは、Ubuntu 14.04でComposerを使用するための基本事項を説明しました。