当我执行以下代码时:
// autoload classes
spl_autoload_register(function($class) {
require_once("$class.php");
});
它适用于与脚本位于同一目录中的所有类。但是,位于另一个目录中的任何类都将无法加载。以下解决方案有效:
define('ABSOLUTE_PATH', "/var/www/application");
// autoload classes
spl_autoload_register(function($class) {
// class directories
$dir = array(ABSOLUTE_PATH,
ABSOLUTE_PATH . '/models');
foreach($dir as $path) {
$file = sprintf('%s/%s.php', $path, $class);
if(is_file($file)) {
require_once($file);
}
}
});
但这感觉很丑。我读过你可以使用命名空间,但我似乎无法让它或其他任何东西工作。有人可以向我展示一个更优雅的解决方案,如果存在的话,我不必对目录路径进行硬编码?