是否可以在heredoc中使用php函数?

是否可以在heredoc模板中使用函数而不破坏它?
像这样的Somethig:

<<<HTML
   <div> showcaptcha(); </div>
HTML;

具体来说,我想在不使用变量的情况下需要另一个模板.
还是有另一个更简单的解决方案,不使用heredoc?
Thx在先进.

例如我正在使用名为requires的类.

class requires {

public function __construct(){
  $this->MYSQL();
  $this->FUNC();
}

public function MAIN_MENU() {
  require_once ('main-menu.tpl');
}

}

然后我在index.php做什么

require_once ('requires.php');
$req = new requires();

echo <<<HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>

//bla bla

</head>
<nav><ul class="fancynav">
{$req->HEAD_SCRIPTS()}
</ul></nav>
HTML;

主menu.tpl

<li><a href="">Item</a></li>
<li><a href="">Item</a></li>
<li><a href="">Item</a></li>
<li><a href="">Item</a></li>
<li><a href="">Item</a></li>

结果我有一个空字段没有PHP错误

<nav><ul class="fancynav">



</ul></nav>

WTF?

解决方法:

是的,你可以使用“encapsed var”技巧:

function hello() {
    global $result;
    $result = 'hi there!';
    return 'result';
}

echo <<<EOF
text ${hello()} text
EOF;

从技术上讲,这是有效的,但最好避免在生产中这样的黑客攻击.临时变量会更清晰.

上一篇:Ruby中的常量:引号、%符号和heredoc


下一篇:c – 在OpenGL / GLFW 3.2中切换窗口和全屏