【问题标题】:include into subdirectory without knowing the path of file to be included在不知道要包含的文件路径的情况下包含到子目录中
【发布时间】:2011-05-17 19:07:23
【问题描述】:

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

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

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

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

我想我需要的是一行文字,上面写着,继续查找直到找到它,然后停止。有这种事吗?

【问题讨论】:

  • 这听起来……很糟糕。
  • 是的。我讨厌这个项目。大约十个不同的开发人员将这个网站放在一起,他们的代码都不同(或根本没有......)

标签: php include


【解决方案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;
}

注意 - 代码未经测试。

【讨论】:

  • 想通了,但它不喜欢它。该页面不会抛出错误,它只是忽略 php 并打印 html
【解决方案2】:

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

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2021-04-13
    • 2018-05-27
    相关资源
    最近更新 更多