包含在子目录中,而不知道要包含的文件的路径


include into subdirectory without knowing the path of file to be included

我有一个包含多个目录和子目录的网站。我只处理一个目录:框架及其所有子目录。所以我正在与/framework, /framework/Module1, /framework/Module1/Class1合作,并一直到framework/Module1/Class1/biology/microscope/microscopeTutorial/thispage.php.我不知道通往框架的途径。

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

我编写了一个可以从框架中运行的脚本,该脚本将遍历所有目录和子目录,这些目录和子目录会将行include('header.php');添加到所有文件中。编辑此脚本以适合每个子目录几乎与手动添加所有子目录一样令人沮丧。

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

我想我需要的是一行,上面写着,继续向上看,直到找到它,然后停下来。这样的事情存在吗?

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

可能是这样的

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

注意 - 代码未经测试。

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

感谢您的帮助!