0Pricing
PHP Academy · レッスン

オートローダーの登録

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 名前空間の宣言と利用
  2. 入れ子の名前空間とエイリアス
  3. PSR-4オートローディング標準
  4. オートローダーの登録
← PHP Academyに戻る