【サブPC 自宅サーバ化計画 CentOS7版】composer インストール

別サイトで「簿記システム」の設計を行っているが、そこでPDF出力用のライブラリをいろいろ調べていたところ、「composer」というキーワードが出てきた。
なんでもPHP向けのパッケージ管理ツールということらしい。

フリーランスとしてのキャリアも長くなってきて、サラリーマン時代のようにチームで開発することがとんと減ってきてしまったので、パッケージ管理ツールやバージョン管理ツールを使う機会もめっきり減ってしまっていたし、PHP触りだしたのもフリーになってからなので、「composer」は触ったことがない。

ということで、ちょっと調べてみた。

公式サイト:https://getcomposer.org/

ググって調べてみると「パッケージ管理ツール」と紹介されているが、公式によると「Composer is not a package manager in the same sense as Yum or Apt are.」ということなので、パッケージ管理ツールではないようだ。
あくまでも「プロジェクト毎にライブラリの依存関係を管理するツール」らしい。

いろんなものを放り込んで試して見るためのサーバーだから、プロジェクトごとに管理してくれる方が有難い。

以下、インストール手順。

1.プロジェクトのディレクトリ作成

ここでいうプロジェクトは「開発するPHPアプリケーションのディレクトリ」という理解で良いと思う。
既にあるプロジェクトならそのディレクトリに移り、なければ新規に作成する。
とりあえず今回は、以下のコマンドで新規にディレクトリを作ったものとする。

$ mkdir /path/to/comp-test
$ cd  /path/to/comp-test

2.composerの実行ファイルをダウンロードしてインストール

以下のコマンドでダウンロードし、インストール。

$ curl -sS https://getcomposer.org/installer | php #実行ファイルのダウンロード
$ php composer.phar init #新規プロジェクトの場合、これでcomposer.jsonというファイルを作る。
$ php composer.phar install #composer.jsonに依存関係を書いていれば、このコマンドで必要なパッケージをインストールしてくれる。

3.プロジェクトにライブラリを追加する

例えば、ロギング用のmonolog最新版を追加する場合。

*composerのコマンドを使って追加
$ php composer.phar require monolog/monolog
Using version ^1.22 for monolog/monolog
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals

- Installing psr/log (1.0.2): Downloading (100%)
- Installing monolog/monolog (1.22.1): Downloading (100%)
(中略)
Writing lock file
Generating autoload files

composerのコマンドを使って導入したいライブラリを追加すると、自動的に依存関係もチェックしてくれるので、monologに必要な、psr/logというライブラリもあわせて導入してくれる。
また、composer.jsonファイルにも記述を追加してくれる。

*composer.jsonに直接記述
プロジェクトのcomposer.jsonファイルに以下のように、”require”キーでパッケージとバージョンを記述。

{
"require": {
"monolog/monolog": "^1.22"
}
}

なお、composer.jsonに記述しても、自動的にパッケージが更新されることはないため、一通り記述が終わったら、下記のコマンドを実行。
$ php composer.phar update

4.ライブラリを利用する

導入したライブラリをプロジェクトで実際に使用する場合、PHPのプログラムでincludeなりrequireなりを記述して呼び出さないといけないが、この手間をかなり省力化出来るようになっている。
composerを使って導入したライブラリは、必ずプロジェクトのディレクトリにある”vendor”ディレクトリの配下に置かれる。更に「vendor/autoload.php」というファイルも出来ているので、このファイルをrequireで読み込んであげればOK。
以下、サンプルコード。

require 'vendor/autoload.php';
$logger = new Monolog\Logger('logging_test');
$logger->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$logger->warning('hoge');

上記のサンプルコードだと、プロジェクトのディレクトリ内にapp.logというログファイルが生成される。
なお、プロジェクトのディレクトリに対して、apacheの書き込み権限が無いとエラーになるので注意。

コメント

タイトルとURLをコピーしました