假设我的文档根目录是 /root 并且在那个目录中我有我的 index.php,加上两个名为 branch1 和 branch 2 的子目录。branch1 和 branch2 都有包含文件,其中一个必须根据一个或多个条件语句包含在内. (是的,我知道在相同名称下使用不同版本的文件是不可取的,但在这种特殊情况下,我愿意接受。)
对于(简化)示例:
/root
/root/index.php
/root/branch1
/root/branch2/include.php
/root/branch2
/root/branch2/include.php
我想做的是这样的:
if ($condition)
chdir ('branch1')
else
chdir ('branch2');
include ('./include.php');
显然上面的代码不起作用,因为即使在 chdir() 之后,包含路径仍然是相对于 /root/index.php 的。
是否可以(如果可以,如何)更改包含()、require()和其他涉及相对路径的操作所基于的基本目录?(当然,这里的想法不仅仅是在上面的例子中包含,而是更多。)
当然,现在有人会指出正确的做法是:
if ($condition)
include ('branch1/include.php')
else
include ('branch2/include.php')
但我故意在这里寻找一个kludge。:-)