いわずもがな、PHPの標準と言ってもいいパッケージ管理ツールです。インストール方法や使い方はこちらを参照してください。
PHPのライブラリ管理ツール「Composer」入門
composerとは
composer.jsonを書いてライブラリ等を公開したい人向け。利用するだけの人はあまり関係ないかも。
composerにクラスマップ作ってくれそうな機能ないかなと思って探したらあった。でも使い方がいまいちわからなかったので調査。
{
"autoload":{
"classmap": ["src/", "something.php"]
}
}
--- proj_root
├ src
│ ├ MyClassA.php
│ └ MyClassB.php
└ MyClassC.php
各クラスの中身はこんな感じ。
<?php
class MyClassA {}
composer.jsonはこんな感じ。
{
...(省略)...
"autoload":{
"classmap": ["src/", "MyClassC.php"]
}
}
以下のコマンド実行するとオートローダーのクラスマップが生成されます。
composer update
オートローダーのクラスマップ出力先はvendor/composerディレクトリ以下の「autoload_classmap.php」です。
-vendor
└ composer
├ autoload_classmap.php
└ ...
このファイルの中身はコマンド実行後以下のようになっています。
<?php
...(省略)...
return array(
...
'MyClassA' => $baseDir . '/src/MyClassA.php',
'MyClassB' => $baseDir . '/src/MyClassB.php',
'MyClassC' => $baseDir . '/MyClassC.php',
);
$baseDirの中身はプロジェクトのルートディレクトリになります。つまり、クラス名からクラスファイルへのマップ配列(クラスマップ)が設定されたことになります。
クラスマップは対象ディレクトリへクラスファイルを配置した後、composer updateする必要があることがわかります。つまり動的ではありません。
コマンドライブラリやプラグインライブラリのような実行時にならないとクラスファイルが確定しないライブラリの場合上記composerクラスマップでは対応できません。もしくはクラスファイルを配置後、毎回composer updateを実行する必要があるでしょう。
そのような場合は別途自前のクラスローダーを実装するとよいでしょう。
以上、composerのclassmapについてのメモでした。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント