2013-01-12 69 views
0

当我执行下面的代码:spl_autoload_register W /多个目录

// 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); 
     } 
    } 
}); 

但这种感觉很难看。我已阅读you can use namespaces,但我似乎无法得到该或其他任何工作。有人可以向我展示一个更优雅的解决方案,如果存在的话,我不需要对目录路径进行硬编码?

+0

为什么不使用自动装卸简单,因为它是需要加载每个单独的类,而不是文件的整个目录,无论他们是否需要 –

+0

@MarkBaker你是什么意思? –

+0

您请求一个新的模型类,自动加载器加载每一个模型类文件,无论您是否要求 –

回答