PHP

autoloadのスクリプトをhtaccessでロード

PHPでクラスを使う場合、クラス・ファイルをいちいちrequireしないといけないわけで、それをスクリプトに書き忘れると、PHPに怒られるわけ。
でも、わしって時々ファイル名を変えたくなる衝動に駆られるもんで、
その度にrequireしているファイル名を修正するのが面倒になる。
一つのファイルにまとめてrequire記述して、そのファイルを読みこめばいいじゃんってご意見もあるだろうが、それだと、全部のクラスをロードすることになって、あるスクリプトでは使うけど、こっちでは使わないって場合、すごく無駄なロードをするはめになるわけだ。

そこで、クラスのrequireを一切しないですむ方法が、auto_prepend_fileってわけです。

まずは下記のfunctionを記述したPHPファイルを作る。この場合のファイル名はなんでも良い。
ここでは便宜上「autoloder.php」としておく。
ただし、クラスファイルのファイル名には、クラス名を含ませておく必要がある。
$className という関数は、読み込んでいないクラス名が自動で取得されるが、
そのクラス名を元に読み込むファイルを紐付ける必要があるためだ。
例えば、「Database」というクラスを自動読み込みの場合は、
「/your/root/path内にあるDatabase.class.phpをrequireする」という動作をする。

function __autoload($className) {

  $class_path = "/your/root/path/";
  $fileName = $class_path . $className . '.class.php';
  if (is_file($fileName)) {
    require $fileName;
  }else{
    #ロードできない場合のエラー表示
    echo "[unloded]" , $fileName;
  }
}

次に.htaccessに下記のコマンドを記述します。

ファイル名の部分に、上記で作成したファイルの名前を記述。

<IfModule mod_php5.c>
  php_value auto_prepend_file "ファイル名"
</IfModule>

こうすることにより、php実行時に、そのスクリプトで利用するクラスがロードされていない時は、

自動でそのクラスを読み込んでくれるはず。

コメントを残す

メールアドレスが公開されることはありません。