PHP为什么EOM不能包含PHP函数?

时间:2012-12-17 15:41:07

标签: php swiftmailer heredoc

  

可能重复:
  Calling PHP functions within HEREDOC strings

我使用Swiftmailer PHP创建订单完整页面。当客户登陆此页面时,我使用包含到PHP文件。

此页面文件包含发送给客户的SwiftMailer EOM HTML。但是我将HTML部分放在块中,所以标题是通过一个名为header的函数,顺序总和也是相同的。我希望能够在EOM中包含EOM功能。这可能吗?

Id  =       46088;

// MAIL FUNCTION
function mailToSend($Id){

// EOM CAN'T BE TABBED
$html = <<<EOM
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
getHeader($Id);
getOrderTotalBoxTable($Id);
</body>
</html>
EOM;


}

mailToSend(46088);

2 个答案:

答案 0 :(得分:1)

您所谈论的是Heredocs,它们不支持功能插值,只有variable interpolation

答案 1 :(得分:1)

就像@deceze说的那样,你不能,但是这会有效(将@xenon评论扩展到一个例子):

function getHeader($Id = '')
{
    $text = '';
    $text.=' Your first line of text, store it in an variable <br>';
    $text.= 'Hello '.$Id.'<br>';
    $text.='Your last text to be returned<br>';
    return $text;
}

// MAIL FUNCTION
function mailToSend($Id){

    $getHeader = getHeader($Id);
    $getOrderTotalBoxTable = getOrderTotalBoxTable($Id);

    // EOM CAN'T BE TABBED
$html = <<<EOM
    <!DOCTYPE html>
    <html lang="en">
    <head>
    </head>
    <body>
    $getHeader;
    $getOrderTotalBoxTable;
    </body>
    </html>
EOM;

}

mailToSend(46088);