オートローダーの登録
spl_autoload_registerとComposerベースのオートローディングを設定します
「オートローダーの登録」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。
spl_autoload_register
spl_autoload_register()は、未定義のクラスが使用されるたびにPHPが呼び出すコールバックを登録します。複数のオートローダーは登録順に実行されます。
基本的なカスタムオートローダー
手書きで実装した、最小限のPSR-4形式のオートローダーです:
<?php
spl_autoload_register(function (string $class): void {
$prefix = 'App\\';
$baseDir = __DIR__.'/src/';
if (!str_starts_with($class, $prefix)) return;
$rel = substr($class, strlen($prefix));
$file = $baseDir.str_replace('\\', '/', $rel).'.php';
if (file_exists($file)) require $file;
});複数のオートローダー
名前空間プレフィックスごとにオートローダーを1つ登録し、それぞれが担当するクラスだけを処理するようにします。
<?php
spl_autoload_register(fn($c) => loadFromSrc($c));
spl_autoload_register(fn($c) => loadFromLib($c));Composer の autoload.php
実際には、自分でオートローダーを書くことはほとんどありません。Composerが、すべてのパッケージと独自のPSR-4マッピングに対応するオートローダーを生成します。
<?php
require __DIR__.'/vendor/autoload.php';dump-autoload
新しいクラスを追加した場合やcomposer.jsonのオートロード設定を変更した場合は、composer dump-autoloadを実行してオートローダーを再生成します。
最適化されたオートローダー
composer dump-autoload --optimizeは静的なクラスマップを構築し、実行時のファイルシステム検索をなくします。本番環境での使用が推奨されます。
ファイルのオートロード(グローバル関数)
グローバル関数を含むヘルパーファイルには、composer.jsonのfilesキーを使用します。これらのファイルは常に読み込まれます。
// composer.json
{
"autoload": {
"files": ["src/helpers.php"]
}
}オートローダーの実行順序
オートローダーは登録順に呼び出されます。最初のオートローダーがクラスを見つけられない場合は、エラーを返さずに処理を終え、PHPが次のオートローダーを試します。
オートロードの問題のデバッグ
「Class not found」の一般的な原因は、dump-autoloadの実行忘れ、ファイル名やクラス名の大文字・小文字の誤り、またはcomposer.jsonの名前空間プレフィックスの不一致です。
PSR-4とclassmapのパフォーマンス
PSR-4ではファイルシステムのstat呼び出しが発生します。classmapではハッシュマップ検索を行うため高速ですが、新しいクラスを追加するたびに再生成が必要です。
オートロードのテスト
オートローダーを検証します:
<?php
require 'vendor/autoload.php';
$obj = new \App\Services\EmailService();
echo get_class($obj); // App\Services\EmailServiceまとめ
spl_autoload_registerは、PHPのすべてのオートロードを支えています。面倒な処理はComposerが行うため、新しいクラスを追加したときにdump-autoloadを実行するだけで済みます。
クイックチェック
Composerのオートローダーを再生成するコマンドは何ですか?
よくある質問
「オートローダーの登録」レッスンは無料ですか?
はい。「オートローダーの登録」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。
「オートローダーの登録」で何を学びますか?
spl_autoload_registerとComposerベースのオートローディングを設定します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
PHP Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「オートローダーの登録」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPHP Academyレッスンでコードを書いて実行できますか?
はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 名前空間の宣言と利用
- 入れ子の名前空間とエイリアス
- PSR-4オートローディング標準
- オートローダーの登録