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

时间:2011-05-23 16:53:33

标签: php

我在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代码应该忽略该变量??

2 个答案:

答案 0 :(得分:4)

尝试global $site;作为您函数的第一行。除非您将它们作为全局变量引入函数,否则任何全局变量都不会在PHP中自动显示。

答案 1 :(得分:0)

这与heredoc语法无关。这是一个简单的可变可见性问题。

getServices()一般无法“看到”$site['url'](或$site)。

  • 如果$site是全局(ew),请将global $site;写为函数的第一行,以便将其纳入范围。

  • 否则,将其作为函数参数传递给getServices()

BTW,$sCode .= ...应该是$sCode = ...,如果我正确地猜测你正在制作一个新的字符串变量,而不是附加到现有字符串变量。