1

您好我正在尝试加载存储在单独目录中的类。我尝试使用 SPL,但我必须设置要搜索的加载目录。

我的结构就像 Zend fw 中的:

|--根

|-- 图书馆

|---- 数据库[目录]

|---------适配器.php

|---------结果.php

|-----注册表[目录]

|---------format.php

|---------bla-bla.php

|--index.php

function __autoload($class_name) 
{
    include LIB."database/".$class_name.".php";
    include LIB."registry/".$class_name.".php";
}

如何在不定义包含 LIB 的情况下从库(所有文件夹)中自动加载所有内容。“数据库/”“注册表”

4

1 回答 1

3

您可以在类名中使用一些约定,以帮助您破译它的位置。许多框架为此目的使用类名约定。

例如:

class diseases_autoimmune_lupus{

} 

然后,您可以explode()通过下划线字符 ( ) 在自动加载函数中使用类名,_然后使用implode()斜线字符 ( /) 来构造相关文件的路径。

function __autoload($class_name){
  $classParts = explode('_',$class_name);
  $path = '/'.implode('/',$classParts) . '.php';
  include($_SERVER['DOCUMENT_ROOT'].$path);
}

在前面的示例中,lupus.php该类位于diseases/autoimmune站点根文件夹中的文件夹中。/diseases/autoimmune/lupus.php

于 2013-04-30T18:17:41.710 回答