この記事でできるようになること
【第一回】 autoloadの概要を理解
【第二回】 仕組みを理解したうえでautoloadを実装
【第三回】 composerからautoloadを利用
そもそも...
Composerとは
概説
PHPのプロジェクトで使用するライブラリ・パッケージの管理(インストール・アップデート等)を単一のファイル(composer.json
)から一括で行えるツールです。
ComposerにはAutoload機能も用意されており、自作Autoloadクラスを作らなくてもファイルの自動読み込みを実現することが可能になります。便利ですね。
Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.
- Enables you to declare the libraries you depend on.
- Finds out which versions of which packages can and need to be installed, and installs them (meaning it downloads them into your project).
- You can update all your dependencies in one command.
大まかな使い方
- composer自体をインストール
- プロジェクトの最上位の階層に
composer.json
ファイルを用意 -
composer.json
ファイルに使用するライブラリやそのバージョンについて書き込む(今回はAutoloadの設定を書き込む) - ターミナルで
composer install
コマンドを実行
ComposerからAutoloadを利用
composer.json
composerがマシンにインストールされている前提で話を進めます。
下記の場所にcomposer.json
を用意します。
./Qiita
├ App
├ Autoload.php
├ index.php
└ composer.json ← NEW!
{
"autoload": {
"psr-4": {
"App\\": "App/"
}
}
}
"App\\"
が名前空間プレフィックスで、
"App/"
がベースディレクトリに当たります。
"App/"
以前のパス(私の環境ではC:/Users/yanmy/OneDrive/Desktop/Qiita
)はcomposerが勝手に取得してくれます。(autoload_psr4.php参照)
<?php
// autoload_psr4.php @generated by Composer
//この2行でベースディレクトリを取得
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'App\\' => array($baseDir . '/App'),
);
用意ができたらターミナル上でQiita
ディレクトリにいることを確認し、以下のコマンドを実行してください。
~\Qiita>composer install
vendor
ディレクトリとcomposer.lock
ファイルが生成されれば成功です。
index.php
を書き換えます。
読み込むAutoloadファイルを自作のものからvendor/autoload.php
に書き換えます。
<?php
require_once "vendor/autoload.php";
use App\Greeting\English as En;
use App\Greeting\Japanese as Ja;
$en = new En\Hello();
$ja = new Ja\Hello();
ターミナル上でindex.php
を実行し出力が変わらないことが確認できれば成功です!
~Qiita> php index.php
Hello World!
こんにちは世界。
お疲れ様でした!!
まとめ
今回はComposerからAuotoloadを利用する方法について学びました。
作業内容は以下の通りです。
- composerをインストール(割愛)
-
composer.json
を用意する - 利用したい名前空間プレフィックスとベースディレクトリの組み合わせを書き込む
- ターミナル上で
composer install
を実行 - Autoload機能を使用したいファイルで
vendor/autoload.php
を読み込む - 動作が変わらないことを確認する
以上でAutoloadについての解説は終了です。
最後まで読んでいただきありがとうございました!!