見出し画像

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のシステム開発は株式会社パパグラムへぜひご相談ください。

いいなと思ったら応援しよう!