问题描述
|
我在我的PHP代码中使用
EOF
函数。
但是我有一个问题。
当我尝试从另一个文件调用变量时,它只会忽略它。
我在另一个文件(header.inc.PHP)中有一个变量,看起来像这样:
$site[\'url\'] = \"http://www.mydomainname.com\";
然后我将require函数放在EOF代码所在的位置:
require_once(\'../../inc/header.inc.PHP\');
EOF代码所在的文件如下所示:
function getServices() {
$sCode .= <<<EOF
<a href=\"{$site[\'url\']}\" class=\"amenu\">Home</a>
EOF;
return $sCode;
}
然后我调用该函数时,变量$ site [\'url \']为空。
这真让我抓狂!有什么理由使EOF代码忽略该变量?
解决方法
尝试将“ 4”作为函数的第一行。除非您将全局变量引入全局函数,否则在PHP中不会自动看到任何全局变量。
,这与heredoc语法无关。这是一个简单的可变可见性问题。
一般情况下,“ 5”不能“看到” 6(或7)。
如果
$site
是全局(ew),则将global $site;
写为函数的第一行,以使其进入范围。
否则,将其作为功能参数传递给getServices()
。
顺便说一句,如果我正确地猜测您正在制作一个新的字符串变量,而不是附加到现有变量,则$sCode .= ...
应该是$sCode = ...
。