从包含的文件中读取父URL

时间:2013-07-26 04:27:21

标签: php variables include

好的,所以我已经搜索了足够长的时间,最后在这里发布这个。果然,它已经被问过了很多次......

我拥有的是一个文件,其中包含另一个文件。这里没有魔力。麻烦的是,包含的文件然后包括另一个文件,其中......包括另一个...是的,痛苦。实际上它的工作非常好,除了我现在想要读取最后一个包含文件中原始文件的URL。

所以我想在原始文件中,file_1.php我只是说

$var_foo = dirname(__FILE__);

$var_foo = $_SERVER['SCRIPT_NAME'];

然后在第一个include,file_2.php中读取该值,并将其传递给

$var_foo_2 = $var_foo;

然后在file_3.php

$var_foo_3 = $var_foo_2

等,直到我到达最终文件file_4.php,在那里我想知道原始文件的URL的确切值。在第一级传递它可以正常工作,但随后它会在某个地方丢失。尝试在file_1中进行GLOBAL - 无济于事。

由于file_3和file_4都必须执行才能生成数据,因此设置断点a la echo / exit来欺骗当前值(如果有的话)是没有选择的。我可以没有那个特别的价值,但我只想拥有它 - 为了它的乐趣......任何想法如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

您的示例使用文件系统路径,而不是“URL”;
我假设父文件的文件路径是您真正想要的。

您不需要在每个包含的页面上“传递”变量。它将自动可用于新页面上的代码。

(如果不是,你可能不在合适的范围内:例如,如果你在一个班级或职能范围内,你需要故意传递它或使用其他方法 - global,也许,甚至将文件名定义为常量而不是变量。)

主脚本

$parent_filename = __FILE__;

// alternatively
// define( 'PARENT_FILENAME',__FILE__ );

include "other-file.php";

其他-file.php

include "other-dir/somefile.php";

其他-DIR / somefile.php

print $parent_filename;

// alternatively
// print PARENT_FILENAME;

/* prints something like:

/path/to/main.php

*/

答案 1 :(得分:0)

如前所述,问题已经解决了:

在第一个include之前设置变量 将变量添加到查询字符串

感谢大家的意见。赞赏。