クラスローダーとは?
登録さえしておけば、毎回 require_once をしなくても、ファイルを読み込んでくれる機能です。
簡単な作り方
はじめに、ClassLoader.php というファイルを作成し、
@ ClassLoader.php
class ClassLoader {
private static $dirs;
public static function loadClass($class) {
foreach (self::directories() as $directory) {
$file_name = $directory . "/" . $class . ".php";
if (is_file($file_name)) {
require $file_name;
return true;
}
}
}
private static function directories() {
if (empty(self::$dirs)) {
$base = __DIR__;
self::$dirs = array(
// 参照を行うフォルダ
// フォルダ内に探したいファイルがない場合は
// エラーになるので 注意
// * 優先度は上から順です
$base . "/library",
$base . "/classes",
);
}
return self::$dirs;
}
}
@ index.php
require_once __DIR__ . '/ClassLoader.php';
spl_autoload_register(array("ClassLoader", "loadClass"));
ClassLoader.php の最後に
spl_autoload_register(array("ClassLoader", "loadClass"));
を直接記述すれば、 ClassLoader.php を読み込むだけで初期設定が完了する。
あとは自由に呼び出しを行えばいいだけだ。
例:
require_once "ClassLoader.php";
spl_autoload_register(array("ClassLoader", "loadClass"));
// User Class を呼び出す
// User.php があれば、エラーにならない
$user = new User();