PHPでオートロードする方法
通常、クラスファイル等をインクルードするには下記のようにrequire_once等を使用し、必要に応じて1つずつ読み込みます。
require_once __DIR__ . 'src/User.php';
require_once __DIR__ . 'src/Hoge.php';
(以下続く)
composer.jsonのautoload機能を使えばクラスファイルのオートロードが実現できます。
筆者の開発環境
PC:Apple M1 チップ搭載MacBook Air
OS:macOS Ventura 13.6
MAMP:6.8
PHP:8.2.0
事前準備
Composerを使用しますので、下記の記事を参考にComposerをインストールしておいてください。
まずプロジェクトフォルダを作成します。MAMPのデフォルトドキュメントルートの直下に作成します。下記のコマンドを実行しドキュメントルートに移動してください。
cd /Applications/MAMP/htdocs
下記のコマンドを実行し、プロジェクトフォルダを作成してください。
mkdir autoload_test
下記のコマンドを実行し、プロジェクトフォルダに移動してください。
cd autoload_test
クラスを格納するフォルダを作成します。下記のコマンドを実行してください。
mkdir src
下記のコマンドを実行し、新しいファイルを作成してください。
touch src/User.php
下記のように編集してください。
<?php
namespace Src;
class User
{
private $name;
public function __construct(string $name)
{
$this->name = $name;
}
public function getNmae(): string
{
return $this->name;
}
}
composer.jsonの準備
下記のコマンドを実行しcomposer.jsonを準備してください。
touch composer.json
下記のように編集してください。ポイントは「"Src\\": "src"」の箇所です。jsonのキーに名前空間を設定してください。jsonの値にはその名前空間に対応させたいフォルダ名を設定してください。今回はsrcフォルダにあるファイルは「Src」という名前空間にマッピングされるという意味になります。
Srcフォルダ内に配置するクラスファイルはクラス名とファイル名が一致するようにしてください。今回で言えば、Userクラスのファイルは「User.php」となります。
{
"autoload": {
"psr-4": {
"Src\\": "src"
}
}
}
編集できたら、下記のコマンドを実行してください。
composer dump
オートロードの検証
下記のコマンドを実行し、新しいファイルを作成してください。
touch index.php
下記のように編集してください。
<?php
use Src\User;
require_once __DIR__ . '/vendor/autoload.php';
$user = new User('Jhon');
echo $user->getNmae() . PHP_EOL;
編集できたら下記のコマンドを実行してください。
php index.php
下記のように名前が表示されたら成功です。
Jhon
解説は以上です。おつかれさまでした。
PHP/Laravelのシステム開発は株式会社パパグラムへぜひご相談ください。