PHPのライブラリ管理ツール。perlのCPANとかrubyのgemみたいなもの。
一昔前はPEARだったがあまり使い勝手がよくなかった。
ウインドウズ用の実行ファイルをインストールした人はコマンドプロンプトでどこからでも動かせるが、
一般的には使いたい場所で以下のコマンドを実行。
curl -sS https://getcomposer.org/installer | php
そうすると中に composer.phar というファイルが作られる。
で、同じフォルダーに以下のような内容を書いたJSONファイル composer.json を用意しておく。
{
"require": {
"monolog/monolog": "1.2.*"
}
}
その状態で
php composer.phar install
とすればOK。vendorフォルダーが作成されてその中にライブラリと autoload.php が作られている。
仕組みはよくわかりませんが、この autoload.php で全部のライブラリを面倒みてくれるという思想らしい。
require 'vendor/autoload.php';
とすれば、アプリ内で全てのライブラリが使用可能になる。
CakePHPでやってみる。
composer.json はこんな感じで
{
"name": "sample_app",
"require": {
"cakephp/cakephp": "*"
},
"require-dev": {
"phpunit/phpunit": "*",
"cakephp/debug_kit": "2.2.*"
},
"config": {
"vendor-dir": "Vendor/"
}
}
require-dev
は開発環境にのみインストールするものという意味。
--no-dev
をつければ本番環境になる。
php composer.phar install --no-dev
バージョンのところはいろいろな書き方ができる。
{
"require": {
"vendor/package": "1.3.2",
"vendor/package2": "1.*",
"vendor/package3": ">=2.0.3"
}
}
以下参照。
インストールすると /Vendor 以下にいろいろファイルが作られているのが分かる。
debug_kit はプラグインなので Plugin 以下に入る。
使い方としてはこの Vendor 以下の cakephp をコアとして、
ここからアプリを cake bake して開発するというイメージ。
なので Vendor 以下はバージョン管理しない。
php composer.phar update
をすればバージョンアップしてくれる。2.5.1→2.5.2
Config/bootstrap.php に以下を追加
require ROOT . DS . 'Vendor' . DS . 'autoload.php';
spl_autoload_unregister(array('App', 'load'));
spl_autoload_register(array('App', 'load'), true, true);
debug_kitは、アプリの方の Config/bootstrap.php で
App::build(array(
'Vendor' => array(ROOT . DS . 'Vendor/'),
'Plugin' => array(ROOT . DS . 'Plugin/'),
));
CakePlugin::load('DebugKit');
を追加すれば使える。
ちなみに、debug_kit はこんなので、
AppController に以下追加して、
class AppController extends Controller {
public $components = array('DebugKit.Toolbar');
}
レイアウトファイル default.ctp にあった 'sql_dump' を消すだけで使える。
いろいろな情報が得られる。