クラスのオートロード

いちいちクラスを使う際に、require(クラス名.class.php)などをするのは面倒なので、autoloadを実装してみた。

まずは.htaccessapacheの *.confでもよい)に以下を記述して、autoloadファイル自体を自動で読込み
[.htaccess]

php_value auto_prepend_file "/var/www/hoge/repos/trunk/config/autoload.php"

[autoload.php]

function __autoload($class)
{
  // 対象ディレクトリ
  $loadDir = array('lib', 'lib/model');

  foreach ($loadDir as $dir) {
    $file = $_SERVER['DOCUMENT_ROOT'] . '/' . $dir . '/' . $class . '.class.php';
    if (file_exists($file)) {
      require_once($file);
    }
  }
}

注意すべきは、相対パスで指定した場合、クラスファイルを呼ぶパスがautoloadファイルからではなく「クラスを呼出した箇所」を基点にパスが決まるという事。その為、DocumentRootを利用した絶対パスで対象のディレクトリを決定させるようにした。
※あとで思ったのだが$_SERVER使わなくてもできるような。。

余力があればディレクトリを再帰的に検索するように実装したい。