先週から新しいプロジェクトに入ったのですが、開発環境どうするかと少し考えて、PHPでいくことにしました。
My365を開発した以降は、ずっとJavaを使っていたので、3年ぶりくらいにPHPをまともに書く態勢となりました。
この3年間で変わったこと
そういうわけで色々とキャッチアップしているのですが、いくつか大きく変化したことがあるようです。
- フレームワークの選択肢が増えたっぽい
- ネームスペースを使うのが当たり前になっているっぽい
- 配列の書き方が良い感じになったっぽい
- パッケージ管理が変わったぽい
かつてPHPで開発するときはCakePHPを使っていましたが、今後のトレンドとかを考えて、Laravelを使ってみることにしました。
すると、まずはComposerというパッケージ管理を使え、ということになっていて、「PEARとかPECLではないんですね」となりました。
ぼくのブログにもかつてPECLと格闘していた記録がありますが、PEARやPECLはあまり使いやすいものではなかった覚えがあります。
Mac OS X的PECL格闘記
Composerはどうなのかというと、圧倒的に使いやすかったです。
Composerとは
Composerは、PHP向けのモダンなパッケージ管理システムで、npmやbundlerのPHP版です。
Composer
公式サイトが意外とかっこよくないです。
実際使ってみましたが、npmとかを使ったことがあれば、すぐに使える感じで良いです。PEARとかPECLはインストールとかちょっと面倒でした。
Composerのインストール
さっそくComposerをインストールしてみます。インストーラーのスクリプトをダウンロードして実行します。
curl -sS https://getcomposer.org/installer | php
ダウンロードしたファイルを、binディレクトリの中にいれて、どこからでも使えるようにしておきます。
mv composer.phar /usr/local/bin/composer
これでインストール完了です。
Comoserでライブラリのインストール
Composerもnpmなどと同様に、JSONに依存関係を記述し、ライブラリをインストールします。
チュートリアルにしたがって、Monologの依存を記述してみます。
cat < composer.json
{
"require": {
"monolog/monolog": "1.0.*"
}
}
EOT
あとは、installサブコマンドを叩くだけ。
composer install
少し待つと依存ライブラリがダウンロードされます。
$ tree . -L 2
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
└── monolog
3 directories, 3 files
autolaod.php というのが自動で配置されて、これを起点にライブラリを読ませる雰囲気です。
実際にライブラリを使ってみる
ライブラリはダウンロードされましたが、requireしないと使えません。
実際にコードを書いてMonologを使ってみます。下記はチュートリアルのコードそのままです。
pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');
autoload.phpだけを読ませておけば、あとはcomposer.jsonに書かれたライブラリは自動で解決できる形になっていて便利です。
上記のコードをテキトーなファイル名で保存し、実行してみます。
php test.php
Monologのロガーが動作して、app.logに下記のような出力が保存されました。
$ cat app.log
[2015-12-20 18:27:36] name.WARNING: Foo [] []
ライブラリ追加するときも、composer.jsonだけ書き換えてinstallしなおして終わりだから、簡単です。
まとめ
Composer、とても便利です。
もはや使わない手はなさそうです。