Composerが分らなかったから触ってみた.part1
背景
よく開発のときにcomposer install
して、必要なパッケージを手元に落としてきたりします。
しかし、このコマンドを打って実際に何が起きているのか分かりませんでした。
そこで、Composerを軽く触ってみて、挙動について調べてみました。
そもそもComposerとは
Composerは「パッケージ管理ツール」という呼ばれ方をされます。
たとえば、Aというパッケージを利用したいとしましょう。
このとき、Aに属するファイルを1つ1つ手動でインストールする、という方法もあります。
しかし、 A を利用するために B というライブラリが必要だった場合はどうでしょうか?
手作業の場合は、依存関係があるファイルも1つ1つ収集する必要がありますが、これは面倒ですね。
Composerでできること
しかし、Composerを使えば、このような依存関係を自動的に解決してくれます。
1つ1つインストールする必要はなく、コマンド1つで、パッケージを利用するために必要なファイル群も含めてインストールしてくれるわけです!
さっそく使ってみる
簡略のため、あらかじめComposerがインストールされているものとします。
まず、適当なディレクトリを作成。
そのディレクトリ内でcomposer init
を実行します。
$ mkdir composer_p $ cd composer_p $ composer init
対話形式でいくつか設定を加えることになりますが、一旦すべてスキップで構いません。
すると、ディレクトリ内にcomposer.json
というファイルが作成されます。
ファイルをみると"require": {}
という箇所があるかと思います。ここに、下記の記述をしましょう。
{ 省略, "require": { "nesbot/carbon": "^2.21" } }
今回は、PHPで日付処理を簡単に扱うことのできるライブラリ、Carbonをインストールしてみます。
Composerでは、インストールすべきパッケージは、composer.jsonのrequireキーの配下に列挙していきます。
パッケージ名は、Packagistから確認できます。
それでは、列挙したパッケージをインストールするために、同じディレクトリ内で下記コマンドを実行しましょう!
$ composer install
するとvendor
というフォルダが作成されます。Composerでインストールしたパッケージ群が、すべてこのフォルダ内に放り込まれます。
またcomposer.lock
というファイルも作成されました。composer.lockは、先ほどcomposer.jsonに列挙したパッケージを取得するために、実際にどのファイルをインストールしたのかをひとまとめにしたものになります。
実際にパッケージが利用できるか確認
さて、Composerによってインストールしたライブラリ、Carbonが実際に利用できるか確認してみましょう。
Carbonを利用するためのtest.php
を作成し、下記を記述します。
<?php require 'vendor/autoload.php'; use Carbon\Carbon; $dt = Carbon::now(); echo $dt. "\n";
Carbonの詳しい使い方については、上にも貼ったリンクなどを参考にしてみてください。
冒頭でrequire 'vendor/autoload.php';
という記述をしています。
Composerを用いてパッケージをインストールした際、vendor配下にautoload.php
というファイルが生成されます。
上記ファイルをrequireすることによって、vendor配下のファイルをオートロードすることができます。
そのため、namespaceをuseすることによって、Carbonインスタンスの使用が可能になります。
結果
$ php test.php 2019-07-28 11:29:31
想定通り、Carbonインスタンスによる現在時刻の出力ができています。