创建Heredoc字符串时未定义变量

问题描述

| 我在我的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 = ...
。