Composer の使い方
Composer は、PHPのライブラリの依存管理をするためのツールです。
- コマンドで簡単に必要なライブラリをインストール、アップデートすることができる
(必要なライブラリが別のライブラリを必要としている(依存している)場合でも、自動的に調整してくれる) - たくさんのライブラリや自作クラスを使う場合でも、 設定によって
require
文を1行で済ませることができる
という特長があり、PHP 5.3.2 以上で使用することができます。
このページでは、バージョン 1.4.2 時点での Composer の基本的な使い方を説明します。
Composer のインストール (Windows)
Windowsの場合、Composer-Setup.exe からインストーラをダウンロードし、実行することでインストールができます。
※ あらかじめ、XAMPP などで PHPをインストールしておく必要があります。
※ Windows 10の場合、 C:\ProgramData\ComposerSetup\bin
に Composer がインストールされ、PATH が設定されます。
使用するフォルダ内での Composer の設定
Composer を使用するフォルダには、composer.json
という設定ファイルを用意する必要があります。
例えば、TCPDF を使用したい場合は、使用するプロジェクトフォルダ内に composer.json
ファイルを作成し、下記のように記載します。
{
"require": {
"tecnickcom/tcpdf": "^6.2"
}
}
require
に使用するライブラリを指定します。(左側はライブラリ名、右側は必要なバージョンです。ライブラリ名は、基本的には Packagist にある名称です。"^6.2" は、6.2以上7.0未満までを意味します)
そのあと、コマンドで composer install
としてライブラリをインストールします。(composer.json
を手書きして composer install
をする代わりに、コマンドで composer require tecnickcom/tcpdf
とすることもできます)
Composer でインストールしたライブラリを使用する
composer install
や composer require
を行うと、vendor
というフォルダにライブラリファイルが格納されます。
vendor
フォルダには autoload.php
というファイルがあり、この1ファイルを読み込んでおくことでインストールしたライブラリが使用できるようになります。
<?php
require __DIR__ . '/vendor/autoload.php'; // composerが生成した vendor/autoload.php を読み込む
// ここから TCPDF を使用したコード (クラスを使用するタイミングで自動的にクラスファイルが読み込まれます。(オートロード))
$pdf = new TCPDF('P', 'mm', 'A4'); // 縦、mm単位、A4
$pdf->setPrintHeader(false); // ヘッダー非表示
$pdf->setPrintFooter(false); // フッター非表示
$pdf->SetFont('kozgopromedium', '', 14); // 小塚ゴシック 14pt
$pdf->AddPage(); // ページ追加
$txt = 'PDF出力のテストです。';
$pdf->Write(0, $txt);
$pdf->Output(__DIR__ . '/test.pdf', 'F');
自作クラスを Composer のオートロードの仕組みに読み込む
自作のクラスも Composer の仕組みを通してオートロードすることができます。
例えば、src/Foo.php
や src/Bar.php
というクラスファイル (App という名前空間でクラス定義している) を読み込みたい場合は下記のように autoload
の psr-4
にフォルダを指定します。
{
"require": {
"tecnickcom/tcpdf": "^6.2"
},
"autoload": {
"psr-4": {"App\\": "src/"}
}
}
App\Foo
クラスが使用された場合は src/Foo.php
、App\Sub\Baz
クラスが使用された場合は src/Sub/Baz.php
が読み込み対象になります。
名前空間を使用していない場合は、下記のように autoload
の classmap
にフォルダを指定します。
{
"require": {
"tecnickcom/tcpdf": "^6.2"
},
"autoload": {
"classmap": [
"src/"
]
}
}
※ psr-4
と classmap
を一緒に使用することもできます。
※ autoloadの書き換えた部分を反映させる場合は、コマンドで composer dump-autoload
を実行します。