前端之家收集整理的这篇文章主要介绍了
PHP 5 – 包含没有类或函数的包含文件的可变范围,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经阅读了很多很多线索,但仍然无法绕过它.
这是我的基本问题:
header.PHP包含一个名为navigation.PHP的文件.在navigation.PHP中,定义了$prevIoUs和$next.使用echo语句我已经验证它们有值.
接下来,header.PHP包含一个名为backnext.PHP的文件.我需要backnext.PHP才能知道$prevIoUs和$next的值.如果我在backnext.PHP的顶部将它们声明为全局,我不会收到错误,但echo语句显示它们是空的.如果我不这样做,我会得到一个未定义的变量错误.
我究竟需要将它们声明为全局,以使backnext.PHP能够正确读取它们的值?
这些文件都不使用函数或类.
如果这些
文件都没有
函数或类,则$prev和$next在全局范围内,并且应该被所有包含
文件看到,并且您不需要使用global关键字.
听起来你的包含顺序可能有点不对劲.
更新:
如果我理解正确你有这样的事情:
header.PHP文件:
- <?PHP
- echo "In header.PHP\n";
-
- require_once("navigation.PHP");
- require_once("backnext.PHP");
-
- echo "Also seen in header.PHP:\n";
- echo "prev=$prev\n";
- echo "next=$next\n";
- ?>
navigation.PHP:
- <?PHP
- echo "In navigation.PHP\n";
- $prev = "Hello World#1";
- $next = "Hello World#2";
- echo "Exiting navigation.PHP\n";
- ?>
backnext.PHP:
- <?PHP
- echo "In backnext.PHP\n";
- echo "prev=$prev\n";
- echo "next=$next\n";
- echo "Exiting backnext.PHP\n";
- ?>
如果我运行这个我得到:
- In header.PHP
- In navigation.PHP
- Exiting navigation.PHP
- In backnext.PHP
- prev=Hello World#1
- next=Hello World#2
- Exiting backnext.PHP
- Also seen in header.ph
- prev=Hello World#1
- next=Hello World#2
backnext.PHP能够看到$prev和$next.