第10章 オブジェクト指向構文 / 第4回 模擬試験

PHPの`spl_autoload_register()`関数に関する次の記述のうち、正しいものはどれか。

`spl_autoload_register()`は、未定義のクラスが使用された際に自動的に呼び出す読み込み関数を登録する。 正解
`spl_autoload_register()`はデータベースへの自動接続を行う関数である。
`spl_autoload_register()`は1つのアプリケーションにつき1回しか呼び出せない。
`spl_autoload_register()`はComposerの代替にはなり得ない機能である。
解説
`spl_autoload_register($callback)`は、未定義のクラスがコード中で使用された瞬間に、そのクラスを読み込むために自動的に呼び出す関数(オートローダー)を登録するための関数です。 他の選択肢が誤りである理由は次の通りです。 ・`spl_autoload_register()`はクラスファイルの自動読み込みに関する機能で、データベースへの接続とは無関係です。 ・`spl_autoload_register()`は複数回呼び出して、複数のオートローダーを登録(キューに追加)できます。それぞれが順番に試行されます。 ・`spl_autoload_register()`は、Composerを使わない小規模なプロジェクトなどでは、手動でのオートロード実装として単体でも使用できます(Composerが生成する`vendor/autoload.php`も内部でこの仕組みを利用しています)。「代替にはなり得ない」は言い過ぎです。 例: ``` spl_autoload_register(function ($class) { $path = __DIR__ . '/src/' . str_replace('\', '/', $class) . '.php'; if (file_exists($path)) { require $path; } }); ``` (参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.10.1節 spl_autoload_register関数 p.578〜579)

あわせて読みたい解説記事