前書き

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

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

前提条件

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

  • Ubuntu 16.04を実行しているシステム

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

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

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

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

sudo apt-get update

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

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

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

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

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

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

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

php -r "if (hash_file('SHA384', 'composer-setup.php') === '') { 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 +`の下にインストールされます。 出力は次のようになります。

OutputAll settings correct for using Composer
Downloading 1.1.1...

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

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

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がシステムに正常にインストールされたことを意味します。

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

php composer-setup.php

これにより、現在のディレクトリに `+ composer.phar `ファイルが生成され、 `。/ composer.phar +`で実行できます。

ステップ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 ^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.json」と「+ composer.lock」、および「+ vendor」ディレクトリが含まれます。

ls -l
Outputtotal 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

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

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

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

cat composer.json
Output{
   "require": {
       "cocur/slugify": "^2.1"
   }
}

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

PHP自体はクラスのロードを自動的に処理しないため、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

これにより、出力「+ 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

結論

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

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