在不知道要包含的文件路径的情况下包含到子目录中

时间:2011-05-17 19:07:24

标签: php include

我有一个包含多个目录和子目录的站点。我只使用一个目录:框架及其所有子目录。所以我正在使用/framework, /framework/Module1, /framework/Module1/Class1,然后是framework/Module1/Class1/biology/microscope/microscopeTutorial/thispage.php。我不知道进入框架的路径。

我需要在我的文件中加入一个包含框架内文件的文件,但我希望能够使用该文件。我找到了两个选择。 $_SERVER['DOCUMENT_ROOT']不起作用,因为我不在根目录中。手动将适当数量的../../../手动插入一千多页,看起来很笨拙,令人沮丧,浪费时间。

我编写了一个脚本,我可以在Framework中运行,它将迭代所有目录和子目录,将行include('header.php');添加到所有文件中。编辑此脚本以适合每个子目录几乎与手动添加它们一样令人沮丧。

那么如何告诉框架和framework/Module1/Class1/biology/microscope/microscopeTutorial/之间的所有文件在框架中查找文件?

我想我需要的是一条单线说,一直抬头直到找到它,然后停下来。这样的事情存在吗?

2 个答案:

答案 0 :(得分:1)

我认为您需要在__autoload函数中安装它。当使用尚未加载的类时,将调用__autoload(className)。

可能是这样的

function __autoload($className) {
    //  pick file up from current, up directory tree
    $fname = $className.'.php';
    while (!file_exists($fname) {
        $fname = '../'.$fName; 
    }
    require_once $fname;
}

注意 - 代码未经测试。

答案 1 :(得分:0)

我在Ian给出的答案上尝试了几种不同的变体,并尝试使用dir函数进行一些变化。我最终决定只创建我的文件的新副本,将额外的../ in添加到代码的相关部分,然后在子目录中运行它。

感谢您的帮助!