前書き
[ Composer](https://getcomposer.org/)は、人気のあるPHP 依存関係管理ツールであり、主にプロジェクトの依存関係のインストールと更新を促進するために使用されます。特定のプロジェクトが依存している他のソフトウェアパッケージを、プロジェクトの要件に応じて適切なバージョンを使用してチェックし、インストールします。
このチュートリアルでは、Ubuntu18.04システムにComposerをインストールして使用を開始します。
このチュートリアルを完了するには、次のものが必要です。
sudo
コマンドを使用できる非rootアカウントを持つUbuntu サーバーがセットアップされ、ファイアウォールがオンになっています。サーバーをお持ちでない学生は、[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には、無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs?from=10680)を使用して実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。Composerをダウンロードしてインストールする前に、サーバーにすべての依存関係がインストールされていることを確認する必要があります。
まず、次のコマンドを実行して、パッケージマネージャーのキャッシュを更新します。
sudo apt update
それでは、依存関係をインストールしましょう。 Composerをダウンロードするには curl
が必要で、インストールして実行するには php-cli
が必要です。使用するライブラリに機能を提供するには、 php-mbstring
パッケージが必要です。これは、 git
Composerがプロジェクトの依存関係をダウンロードし、 unzip
によって圧縮パッケージを抽出するために使用されます。次のコマンドですべてをインストールできます。
sudo apt install curl php-cli php-mbstring git unzip
前提条件をインストールした後、Composerを自分でインストールできます。
Composerは、PHPで記述された[インストーラー](https://getcomposer.org/installe)を提供します。ダウンロードして破損していないか確認し、Composerのインストールに使用します。
ホームディレクトリにいることを確認してから、 curl
を使用してインストーラーを取得します。
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
次に、インストーラーが[Composer Public Keys / Signatures](https://cloud.tencent.com/developer/article/write?from=10680#)ページにある最新のインストーラーのSHA-384hashと一致することを確認します。そのページからハッシュをコピーし、シェル変数として保存します。
HASH=544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061
強調表示された値を最新のハッシュに置き換えてください。
次に、次の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
「Installercorrupt」が表示された場合は、インストールスクリプトを再度ダウンロードして、正しいハッシュを使用しているかどうかを再確認する必要があります。次に、コマンドを実行してインストーラーを再度確認します。確認済みのインストーラーを入手したら、続行できます。
composer
をグローバルにインストールするには、次のコマンドを使用します。これにより、Composerが / usr / local / bin
にある composer
という名前のシステム全体のコマンドとしてダウンロードおよびインストールされます。
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
次の出力が表示されます。
All settings correct for using Composer
Downloading...
Composer(version 1.6.5) successfully installed to:/usr/local/bin/composer
Use it: php /usr/local/bin/composer
インストールをテストするには、以下を実行します。
composer
この出力には、Composerのバージョンとパラメーターが表示されます。
______
/ ____/___ ____ ___ ____ ____ ________ _____
/// __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___///___//_////////_///_/(__ ) __/ /
\____ /\____/_//_//_/.___/\____/____/\___/_//_/
Composer version 1.6.52018-05-0411:44:59
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:1for normal output,2for more verbose output and 3for debug
...
これにより、Composerがシステムに正常にインストールされ、システム全体で使用できることが確認されます。
**注:**このサーバーでホストされているプロジェクトごとにComposer実行可能ファイルが必要な場合は、プロジェクトごとにローカルにインストールできます。 NPMのユーザーは、この方法に精通しています。この方法は、システムユーザーがシステムにソフトウェアをインストールする権限を持っていない場合にも役立ちます。
これを行うには、コマンド phpcomposer-setup.php
を使用します。これにより、現在のディレクトリに composer.phar
を使用してファイルが生成され、。/ composer.pharコマンド
で使用できます。
次に、Composerを使用して依存関係を管理する方法を見てみましょう。
PHPプロジェクトは通常、外部ライブラリに依存しており、これらの依存関係とそのバージョンの管理には注意が必要です。 Composerは、依存関係を追跡し、他のユーザーが簡単にインストールできるようにすることで、この問題を解決します。
プロジェクトでComposerを使用するには、 composer.json
ファイルが必要です。 composer.json
ファイルは、プロジェクトにダウンロードする必要のある依存関係と、各パッケージのどのバージョンをインストールできるかをComposerに通知します。これは、プロジェクトの一貫性を維持し、下位互換性の問題を引き起こす可能性のある不安定なバージョンのインストールを回避するために非常に重要です。
このファイルを手動で作成する必要はありません。これを行うと、構文エラーが発生しやすくなります。 composer.json
が require
コマンドを使用してプロジェクトに依存関係を追加すると、Composerは自動的にファイルを生成します。このファイルを手動で編集しなくても、同じ方法で他の依存関係を追加できます。
Composerを使用してパッケージをプロジェクトの依存関係としてインストールするプロセスには、次の手順が含まれます。
composer require
を実行して、 composer.json
ファイルに依存関係を含めてパッケージをインストールします。デモアプリケーションで試してみましょう。
このアプリケーションの目的は、特定の文をURLに適した文字列(スラッグ)に変換することです。これは通常、ページタイトルをURLパスに変換するために使用されます(このチュートリアルのURLの最後の部分のように)。
プロジェクトのディレクトリを作成することから始めましょう。これを** slugify **と呼びます:
cd ~
mkdir slugify
cd slugify
次に、[Packagist.org](https://packagist.org/)で、スラッグの生成に役立つパッケージを検索します。 Packagistで「slug」という単語を検索すると、次のような結果が得られます。
リストの各パッケージの右側に2つの番号が表示されます。上部の数字はパッケージのインストール数を示し、下部の数字はパッケージが[GitHub](https://github.com/)でスター付けされた回数を示します。これらの番号に基づいて検索結果を並べ替えることができます(検索バーの右側にある2つのアイコンを探してください)。一般的に言って、より多くのデバイスとより多くの星を含むパッケージは、多くの人々がそれらを使用するため、より安定する傾向があります。パッケージの説明の関連性をチェックして、それが必要なものであることを確認することも重要です。
単純なストリングからスラグへのコンバーターが必要です。検索結果から、 cocur / slugify
パッケージは、適切な数のインストールとスターがあり、よく一致しているようです。 (パッケージはスクリーンショットが示すよりも深いです。)
Packagistのパッケージには、ベンダー名とパッケージ名があります。各パッケージには、GitHubがリポジトリに使用する vendor / package
の形式の一意の識別子(名前空間)があります。インストールするライブラリは、 cocur / slugif
名前名を使用します。プロジェクト内のパッケージをリクエストするには、名前名が必要です。
インストールするパッケージが正確にわかったので、 composer require
を実行してそれを依存関係として含め、プロジェクトの composer.json
ファイルを生成します。
composer require cocur/slugify
Composerが依存関係をダウンロードすると、次の出力が表示されます。
Using version ^3.1for cocur/slugify
. /composer.json has been created
Loading composer repositories withpackage information
Updating dependencies(including require-dev)
Package operations:1 install,0 updates,0 removals
- Installing cocur/slugify(v3.1):Downloading(100%)
Writing lock file
Generating autoload files
出力からわかるように、Composerは使用するパッケージのバージョンを自動的に決定します。ここでプロジェクトディレクトリを確認すると、 composer.json
と composer.lock
の2つの新しいファイルと、 vendor
ディレクトリが含まれています。
ls -l
total 12-rw-rw-r--1 sammy sammy 59 Jul 1116:40 composer.json
- rw-rw-r--1 sammy sammy 2934 Jul 1116:40 composer.lock
drwxrwxr-x 4 sammy sammy 4096 Jul 1116:40 vendor
composer.lock
ファイルは、各パッケージのインストール済みバージョンに関する情報を保存し、他のユーザーがプロジェクトのクローンを作成してその依存関係をインストールするときに同じバージョンが使用されるようにするために使用されます。 vendor
ディレクトリは、プロジェクトの依存関係が配置されている場所です。 vendor
フォルダーをバージョンコントロールに送信する必要はありません。** composer.json ファイルと composer.lock **ファイルを含めるだけで済みます。
すでに composer.json
ファイルが含まれているプロジェクトをインストールする場合は、 composerinstall
を実行してプロジェクトの依存関係をダウンロードしてください。
バージョン制限を見てみましょう。 composer.json
ファイルの内容を確認すると、次のように表示されます。
cat composer.json
{" require":{"cocur/slugify":"^3.1"}}
sam
composer.json
のバージョン番号の前に特殊文字^
があります。 Composerは、プロジェクトを安定させながら柔軟性を提供するために、必要なパッケージバージョンを定義するために、いくつかの異なる制約と形式をサポートしています。 [セマンティックバージョン管理](http://semver.org/)の後、自動生成された composer.json
ファイルで使用されるcaret(^
)演算子は、最大の相互運用性を実現するために推奨される演算子です。この場合、互換性のある最小バージョンとして** 3.1 を定義し、 4.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のバージョン制約の詳細については、[公式ドキュメント](https://getcomposer.org/doc/articles/versions.md)を参照してください。
次に、Composerを使用して依存関係を自動的にロードする方法を見てみましょう。
PHP自体はクラスを自動的にロードしないため、Composerは、プロジェクトに含めることができる自動ロードスクリプトを提供して、無料で自動的にロードします。これにより、依存関係を使いやすくなります。
クラスをインスタンス化する前に、PHPスクリプトに vendor / autoload.php
ファイルを含めるだけです。最初の依存関係を追加すると、Composerはこのファイルを自動的に生成します。
私たちのアプリで試してみましょう。ファイル test.php
を作成し、テキストエディタで開きます。
nano test.php
次のコードを追加します。このコードは、 vendor / autoload.php
ファイルをインポートし、 cocur / slugify
依存関係をロードし、それを使用してスラッグを作成します。
<? php
require __DIR__ .'/vendor/autoload.php';
use Cocur\Slugify\Slugify;
$slugify =newSlugify();
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
が生成されます。
新しいバージョンが表示されたら、依存関係を更新する必要があるので、その対処方法を見てみましょう。
プロジェクトの依存関係を新しいバージョンに更新する場合は常に、次の update
コマンドを実行します。
composer update
これにより、プロジェクトで必要なライブラリの新しいバージョンがチェックされます。新しいバージョンが見つかり、それが composer.json
ファイルで定義されたバージョン制約と互換性がある場合、Composerは以前にインストールされたバージョンを置き換えます。 composer.lock
ファイルは、これらの変更を反映するように更新されます。
次のように指定して、1つ以上の特定のライブラリを更新することもできます。
composer update vendor/package vendor2/package2
依存関係を更新した後は、必ず composer.json
ファイルと composer.lock
ファイルを確認して、他の人がこれらの更新されたバージョンをインストールできるようにしてください。
Composerは、すべてのPHP開発者がユーティリティベルトに含める必要のある強力なツールです。このチュートリアルでは、Composerをインストールし、単純なプロジェクトで使用しました。これで、依存関係をインストールおよび更新する方法がわかりました。
プロジェクトの依存関係を管理するためのシンプルで信頼性の高い方法を提供することに加えて、コミュニティによって作成されたPHPパッケージを共有および検出するための新しい事実上の標準も確立します。
その他のUbuntuチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。
参照:「Ubuntu18.04にComposerをインストールして使用する方法」
Recommended Posts