PHPマニュアル 提案 次のようなクラスを自動ロードする
_function __autoload($class_name){
require_once("some_dir/".$class_name.".php");
}
_
このアプローチは、ファイル_my_dir/FooClass.php
_に保存されているクラスFooClass
をロードするのに問題なく機能します。
_class FooClass{
//some implementation
}
_
質問
_autoload()
関数を使用して、ファイル_my_dir/foo_class.php
_に保存されているFooClass
にアクセスできるようにするにはどうすればよいですか?
このようにクラス名を変換できます...
function __autoload($class_name){
$name = strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $class_name));
require_once("some_dir/".$name.".php");
}
これはテストされていませんが、クラス名を変換するために以前に同様のものを使用しました。私の関数もO(n)で実行され、低速の後方参照に依存していません。
// lowercase first letter
$class_name[0] = strtolower($class_name[0]);
$len = strlen($class_name);
for ($i = 0; $i < $len; ++$i) {
// see if we have an uppercase character and replace
if (ord($class_name[$i]) > 64 && ord($class_name[$i]) < 91) {
$class_name[$i] = '_' . strtolower($class_name[$i]);
// increase length of class and position
++$len;
++$i;
}
}
return $class_name;