我有一个非常旧的应用程序脚本,实际加载控制器,模型和实体与类名使用下面的代码片段
function __autoload($className)
{
list($filename , $suffix) = explode('_' , $className);
switch (strtolower($suffix))
{
case 'model':
$folder = '/model/';
$suffix = BIZ_SUFFIX;
break;
case 'dao':
$folder = '/entity/';
$suffix = DAO_SUFFIX;
break;
}
$file = SITE_PATH . $folder . strtolower($filename) . $suffix .'.php';
if (file_exists($file))
{
include_once($file);
}
else
{
die("File '$filename' containing class '$className' not found in '$folder'.");
}
}
现在我在集成任何第三方自动加载器时都有问题,即使是与composer自动加载。
我甚至试过下面的方法
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});
和
function my_autoloader($class) {
include 'classes/' . $class . '.class.php';
}
spl_autoload_register('my_autoloader');
错误味精:
Fatal error: Class 'Template_Model' not found
如果使用spl_autoload_register
,则不会调用__autoload
函数。
将__autoload
重命名为其他名称,例如old_autoload
。然后注册到自动加载器spl_autoload_register('old_autoload');