質問: $dir . '/' . $class . '.php'; if(is_readable($file)){ require $file; return; } } } } ``` 上記の ``` spl_autoload_register(array($this,'loadClass')) ``` ここの部分なのですが、spl_autoload_registerの引数は何を指しているのでしょうか? 「$this」と「loadClass」の2つの値を配列として扱っていますが、配列にしなければならない理由があるのでしょうか? また「$this」は何を示しているのでしょうか? ご助言頂けましたら幸いです。 よろしくお願いします。
回答: PHPマニュアルはこちらですね。 spl_autoload_register() > > 指定した関数を __autoload() の実装として登録する > > > ちなみに第一引数の型はcallableで「コールバック」ですね。 コールバックについては意味を調べておいてください。 $thisはクラスの中で書かれている場合、そのクラス自身をさします。 クラスの基礎 つまるところ、 **”コールバックとして$this(今回はClassLoader)のloadClass()を実行します”という設定をしている**ことになります。 __autoload()は「 未定義のクラスのロードを試みる」なので、これもあわせると、 「未定義のクラスの読み込みがphpプログラムにて宣言された場合、ClassLoader::loadClass()を実行して指定クラスの読み込みを行う」という意味になります。 追記: PHPマニュアルにも提示のコードと同等のコードがNoteにあがっていますのでそちらも読んでみてください。 ちょっと蛇足: autoloadの仕組みとオブジェクト指向をしっかりとおさえておかないと結構厳しいと思います。。。 第6章を重点的に確認し、身に着けてからでないと理解は難しいという意見をよく見ます。