您好我正在尝试加载存储在不同目录中的类。 我尝试使用SPL,但我必须设置加载目录搜索的位置。
我的结构就像Zend fw:
| --root
| - 图书馆
| ----数据库[dir]
| --------- adapter.php
| --------- results.php
| -----注册表[DIR]
| --------- format.php
| --------- BLA-bla.php
| --index.php
function __autoload($class_name)
{
include LIB."database/".$class_name.".php";
include LIB."registry/".$class_name.".php";
}
如何在没有definig的情况下从库(所有文件夹)自动加载全部包含LIB。“database /”,“registry”
答案 0 :(得分: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