クラスローダーとは?
登録さえしておけば、毎回 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();