前書き

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

このガイドでは、Debian 10サーバーにComposerをインストールして使用する方法を説明します。

前提条件

このチュートリアルを完了するには、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-10 [Debian 10初期サーバーセットアップガイド]に従ってDebian 10サーバーをセットアップする必要があります。 、 `+ sudo +`特権を持つ通常のユーザーを含みます。

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

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

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

sudo apt update

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

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

前提条件をインストールしたら、Composer自体をインストールできます。

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

Composerは、PHPで記述されたhttps://getcomposer.org/installer[installer]を提供します。 ダウンロードし、破損していないことを確認してから、Composerのインストールに使用します。

ホームディレクトリにいることを確認してから、 `+ curl +`を使用してインストーラーを取得します。

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

次に、インストーラーが[Composer Public Keys / Signatures] [composer-sigs]ページにある最新のインストーラーのSHA-384ハッシュと一致することを確認します。 そのページからハッシュをコピーして、シェル変数として保存します。

HASH=

強調表示された値を最新のハッシュに置き換えてください。

次のPHPスクリプトを実行して、インストールスクリプトが安全に実行できることを確認します。

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

次の出力が表示されます。

出力

Installer verified

「+ Installer破損+」が表示された場合、インストールスクリプトを再度ダウンロードし、正しいハッシュを使用していることを再確認する必要があります。 次に、コマンドを実行してインストーラーを再度検証します。 検証済みのインストーラーを入手したら、続行できます。

`+ composer `をグローバルにインストールするには、次のコマンドを使用して、Composerをダウンロードし、 ` composer `という名前のシステム全体のコマンドとして ` / usr / local / bin +`の下にインストールします。

sudo php composer-setup.php --install-dir= --filename=

次の出力が表示されます。

OutputAll settings correct for using Composer
Downloading...

Composer (version 1.8.6) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

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

composer

次のようなComposerのバージョンと引数を示す出力が表示されます。

Output   ______
 / ____/___  ____ ___  ____  ____  ________  _____
/ /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                   /_/
Composer version 1.8.6 2019-06-11 15:03:05

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.
 -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の依存関係を管理する方法を見てみましょう。

ステップ3-PHPプロジェクトでComposerを使用する

PHPプロジェクトは外部ライブラリに依存することが多く、これらの依存関係とそのバージョンを管理するのは難しい場合があります。 Composerは、依存関係を追跡し、他の人がそれらを簡単にインストールできるようにすることでそれを解決します。

プロジェクトで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

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

image:https://assets.digitalocean.com/articles/composer_debian10/packagist_slug_search.png [Packagist Search]

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

単純な文字列からスラグへのコンバータが必要です。 検索結果から、パッケージ「+ cocur / slugify +」は、適切な量のインストールとスターを備えた、良好な一致のようです。

Packagistのパッケージには、*ベンダー*名と*パッケージ*名があります。 各パッケージには、GitHubがリポジトリに使用するのと同じ形式(「+ / 」の形式)で一意の識別子(名前空間)があります。 インストールするライブラリは、ネームスペース「 cocur / slugif +」を使用します。 プロジェクトでパッケージを要求するには、名前空間が必要です。

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

composer require cocur/slugify

Composerが依存関係をダウンロードすると、次の出力が表示されます。

OutputUsing version ^3.2 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 (v3.2): 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 jul 15 13:53 composer.json
-rw-r--r-- 1 sammy sammy 2952 jul 15 13:53 composer.lock
drwxr-xr-x 4 sammy sammy 4096 jul 15 13:53 vendor

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

バージョンの制約を簡単に見てみましょう。 `+ composer.json`ファイルの内容を確認すると、次のように表示されます。

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

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

次に、Composerで依存関係を自動的に読み込む方法を見てみましょう。

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

PHP自体はクラスを自動的にロードしないため、Composerには自動ロードスクリプトが用意されています。これをプロジェクトに含めると、自動ロードを無料で取得できます。 これにより、依存関係を簡単に操作できます。

行う必要があるのは、クラスのインスタンス化の前にPHPスクリプトに `+ vendor / autoload.php`ファイルを含めることだけです。 このファイルは、最初の依存関係を追加するとComposerによって自動的に生成されます。

アプリケーションで試してみましょう。 ファイル `+ test.php +`を作成し、テキストエディターで開きます。

nano test.php

`+ vendor / autoload.php `ファイルを取り込み、 ` cocur / slugify +`依存関係をロードし、それを使用してスラッグを作成する次のコードを追加します。

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はインストールされている以前のバージョンを置き換えます。 これらの変更を反映するために、 ` composer.lock +`ファイルが更新されます。

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

composer update

依存関係を更新した後、必ず + composer.json`および + composer.lock`ファイルへの変更をコミットしてください。そうすれば、プロジェクトで作業している人は誰でも同じパッケージバージョンにアクセスできます。

結論

Composerは、すべてのPHP開発者がユーティリティベルトに持つべき強力なツールです。 このチュートリアルでは、Debian 10にComposerをインストールし、単純なプロジェクトで使用しました。 これで、依存関係をインストールおよび更新する方法がわかりました。

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