【问题标题】:Read parent URL from included file从包含的文件中读取父 URL
【发布时间】:2013-07-26 04:27:21
【问题描述】:

好的,所以我已经搜索了足够长的时间,终于在这里发布了这个。果然,它已经被问过无数次了……

我拥有的是一个文件,其中包含另一个文件。这里没有魔法。问题是,包含的文件然后包含另一个文件,其中...包含另一个...是的,很痛苦。实际上,这一切都很好,除了我现在想在最后一个包含的文件中读取原始文件的 URL。

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

$var_foo = dirname(__FILE__);

或

$var_foo = $_SERVER['SCRIPT_NAME'];

然后在第一个包含 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 都必须执行才能生成数据,因此无法通过回显/退出设置断点来欺骗当前值(如果有)。我可以在没有那种特殊价值的情况下生活,但我只是想拥有它——为了它的乐趣......有什么想法可以做到这一点吗?

【问题讨论】:

  • 如果您在file_1 中定义了$var_foo,则所有(嵌套)包含的文件都可以看到并使用此变量(除非它包含在函数/等范围内)。
  • 也就是我之前的想法,而且既然值到了file_2 OK,我还以为没问题。好吧,这不是 - 但是 - 那是由于 file_3 中的拼写错误,我的错。

标签: php variables include


【解决方案1】:

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

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

(如果不是,您可能不在正确的范围内:例如,如果您在类或函数中,则需要故意传递它或使用其他方法 - global,也许,甚至将文件名定义为常量而不是变量。)

主脚本

$parent_filename = __FILE__;

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

include "other-file.php";

其他文件.php

include "other-dir/somefile.php";

其他目录/somefile.php

print $parent_filename;

// alternatively
// print PARENT_FILENAME;

/* prints something like:

/path/to/main.php

*/

【讨论】:

  • 正确。我昨天早上通过第二杯茶解决了它。快速而肮脏,将变量设置在第一个包含之前,然后将其懒惰地添加到查询字符串中。也许不是最优雅的,但就像一个魅力。
【解决方案2】:

如前所述,问题已解决如下:

在第一个包含之前设置变量 向查询字符串添加变量

感谢大家的意见,不胜感激。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 2012-07-07
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多