是否可以在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;
从技术上讲,这是有效的,但最好避免在生产中这样的黑客攻击.临时变量会更清晰.