spl_autoload_register は PHP ファイルとクラスを同時に読み込んでいるのですか?

spl_autoload_register に渡している関数の仕組みを解説していきます。
2021年12月29日
ユーザー

大変、お世話になります。

spl_autoload_register(function ($class) {
  $fileName = sprintf(__DIR__ . '/%s.php', $class);

  if (file_exists($fileName)) {
    require($fileName);
  } else {
    echo 'File not found: ' . $fileName;
    exit;
  }
});

こちらですが、spl_autoload_registerは「new をしたときにそのクラスが読み込まれていなかったら呼ばれる関数」との事ですが、クラスを呼び出すために、その該当のPHPファイルもrequireされる、ということでしょうか?

ということは、spl_autoload_registerで読み込むのは、クラス専用のPHPファイルであり、クラスのないPHPファイルは、spl_autoload_registerは使えず、通常のrequireincludeを使わなければいけない、ということでしょうか?

複数のクラスがあるPHPファイルの場合(例えば、(1)と(2)のクラスがあるとして)は、(1)がnewされた時には、そのクラスを呼び出すためにそのPHPファイルが呼び出され、別で(2)がnewされた時には、そのクラスを呼び出すために、別でそのPHPファイルが呼び出される、ということでしょうか?

あるいは、「newをしたときにそのクラスが読み込まれていなかったら呼ばれる関数」ということは、(1)がnewされた時にそのPHPファイルは呼び出されているので、(2)がnewされる時には、既にそのPHPファイルは読み込まれているということで、新たに読み込む作業は発生しないのでしょうか?

newされなかったら、クラスがあるPHPファイルでも、そのPHPファイルは呼び出されない、ということでしょうか?

newした時に、自動的に、そのクラスのあるPHPファイルが呼び出される、という理解で大丈夫でしょうか?

なんとなくは理解できているのですが、明確には理解できてないので、確認の質問のような感じにもなりますが、教えて頂けましたら幸いです。

宜しくお願い致します。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(4)