使用静态类变量 - 在heredoc中

时间:2011-06-09 05:27:57

标签: php html

我设置了一个类,简化了这个:

class Labels {
    static public $NAMELABEL = "Name";
}

我成功地获得了以下代码以便正常工作:

echo '<table border="1">';
  echo '<tr>';
  echo "<th>" . Labels::$NAMELABEL . "</th>";
  echo '</tr>';

 // the rest of the Table code not shown for brevity...

echo "</table>";

我在运行时看到一个名为名称的列标题的表格 - 所以它运行正常。

但不是在heredoc中 - 我得到“注意:未定义的变量:NAMELABEL在C:\ xampp ........ blah blah” 当我运行以下内容时:

    echo <<<_END
       <form action="index.php" method="post"><pre>
       Labels::$NAMELABEL : <input type="text" name="author" />
       <input type="submit" value="ADD RECORD" />
    </pre></form>
_END;

我尝试了各种引用,字符串连接运算符'。',没有任何效果。 我想“我有静态类变量在HTML表格中工作, 为什么一个heredoc。“

我喜欢heredocs,他们有一个奇怪的名字和奇怪的问题。 这是我渴望的那种令人心碎的乐趣,heredocs 正义的小蠢猴子。

我真的想在这里使用我的静态类变量 - 是否有一些组合 引用/字符串连接,这将允许我将它们嵌入我的heredocs?

1 个答案:

答案 0 :(得分:9)

heredocs中的插值与双引号中的插值相同,因此您可以使用curly brace ("complex") syntax

然而,解析器无法识别静态类变量(请参阅前面的文档)。为了引用静态类变量,您需要在本地设置它们,如下所示:

$label = Labels::$NAMELABEL;

echo <<<_END
    <form action="index.php" method="post"><pre>
       $label : <input type="text" name="author" />
       <input type="submit" value="ADD RECORD" />
    </pre></form>
_END;