2012-12-17 35 views
0

可能重复:
Calling PHP functions within HEREDOC stringsPHP为什么EOM不能包含PHP函数?

我使用Swiftmailer PHP创建订单完整的页面。当客户登录此页面时,我将一个包含到PHP文件中。

此页面文件具有发送给客户的SwiftMailer EOM HTML。然而,我有块的HTML部分,所以头是通过称为头的函数和订单总计也是一样的。我希望能够在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); 
+3

“EOM” == ** **定界符? – deceze

+1

难道你不能把函数的输出放到一个变量中,并把它放在heredoc里面吗? – xenon

+1

什么是EOM我搜索了,我找不到它的文档 – TheBlackBenzKid

回答

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); 
+0

使用这个例子,例如''getHeader'作为上面的函数,代码就像'function getHeader($ oid){echo'hello'; }'所以电子邮件确实发送,但它在函数部分是空白的,页面显示'hello'是否需要把它放在全局$ html var? – TheBlackBenzKid

+0

我没有完全理解你的问题,但函数getHeader需要返回一些东西,而不是打印,沿着这些线的东西:“function getHeader($ oid){return'hello'。$ oid;}” –

+0

你能告诉我一个例如,我可以只做一些回报吗? – TheBlackBenzKid

相关问题