2011-05-17 182 views
0

我有一个包含多个目录和子目录的站点。我只处理一个目录:框架及其所有子目录。所以我正在使用/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

这听起来很可怕。 – 2011-05-17 19:13:12

+0

是的。我讨厌这个项目。大约有十个不同的开发者把这个网站放在一起,他们的代码都不一样(或者根本不是......) – EllaJo 2011-05-17 19:57:36

回答

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; 
} 

注 - 未测试的代码。

+0

想通了,但它不喜欢它。页面不会抛出错误,它只是忽略php并打印html – EllaJo 2011-05-17 19:53:01

0

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

感谢您的帮助!

相关问题