PHP手册suggests自动加载类
function __autoload($class_name){
require_once("some_dir/".$class_name.".php");
}
这种方法可以正常加载保存在文件FooClass
中的类my_dir/FooClass.php
,如
class FooClass{
//some implementation
}
问题
如何才能使用保存在文件_autoload()
中的FooClass
功能并访问my_dir/foo_class.php
?
答案 0 :(得分:68)
你可以像这样转换类名......
function __autoload($class_name){
$name = strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $class_name));
require_once("some_dir/".$name.".php");
}
答案 1 :(得分:2)
这是未经测试但我之前使用了类似的东西来转换类名。我可能会补充一点,我的函数也在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;