我的应用程序中有一个自动加载器功能:
spl_autoload_register(function ($className) {
if (file_exists(ROOT . DS . 'library' . DS . 'intranet' . DS . 'classes' . DS .strtolower($className) . '.php')){
require_once(ROOT . DS . 'library' . DS . 'intranet' . DS . 'classes' . DS .strtolower($className) . '.php');
print_r($className." loaded <br/>");
} else if (file_exists(ROOT . DS . 'application' . DS . 'controller' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'controller' . DS . strtolower($className) . '.php');
} else if (file_exists(ROOT . DS . 'application' . DS . 'model' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'model' . DS . strtolower($className) . '.php');
} else if (file_exists(ROOT . DS . 'application' . DS . 'view' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'view' . DS . strtolower($className) . '.php');
} else {
throw new Exception("Class: $className not autoloaded!");
}
});
在我的一个文件中,一个会话管理器,它调用了一个名为数据库的类。该类database
之前没有被调用过,然后应该在那时被自动加载。
但是,它似乎不是 - 也就是说,我正在打印一个正在加载的类列表:
debug loaded
sessionmanager loaded
database loaded
database loaded
所以看起来它正在加载,对吧?
在 sessionnmanager 类中:
Fatal error: Class 'database' not found
我的自动加载器看起来不错吗?
我已经在__construct
方法中的数据库类中打印了一个,是的,果然,它正在被调用。