0

假设我的文档根目录是 /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。:-)

4

1 回答 1

0

为什么不是全局变量?

const $BRANCH = $condition ? 'branch1' : 'branch2';

include ($BRANCH.'/include.php');
于 2014-05-27T13:05:04.827 回答