这个问题已经过时了,但要通过一些可能的解决方案提供更完整的答案。条件句不允许在 heredoc 的“内部”,但您可以在 heredocs 中使用条件句。
这些示例应该让您了解heredoc 的用法。请注意,heredoc 的第一行以少于 3 个符号和一些任意文本开头,第一行末尾没有空格。按回车。必须以类似方式关闭heredoc。您可能知道,用于打开heredoc 的文本必须用于关闭它,通常但不要求后跟分号。确保分号或最后一个文本字符后面没有尾随空格或字符,然后按 Enter。
function doSomething($username = '', $status_id = '') {
if ('' != $username && '' != $status_id) {
$reply = <<<EOT
<a class ="reply" href="viewtopic.php?replyto=@{$username}&status_id={$status_id}&reply_name={$username}"> reply </a>
EOT;
} else {
$reply = <<<EOT
<h2>The username was not set!</h2>
EOT;
}
return $reply;
}
echo doSomething('Bob Tester', 12);
echo doSomething('Bob Tester');
echo doSomething('', 12);
根据您的具体情况,您可能会发现使用类来进行您想在 heredoc 中使用的比较很有帮助。这是一个示例,说明您可以如何做到这一点。
class Test {
function Compare($a = '', $b = '') {
if ($a == $b)
return $a;
else
return 'Guest';
}
};
function doSomething($username = '') {
$Test = new Test;
$unme = 'Bob Tester';
$reply = <<<EOT
<h2>Example usage:</h2>
Welcome {$Test->Compare($username, '')}<br />
<br />
Or<br />
<br />
Welcome {$Test->Compare($username, $unme)}
EOT;
return $reply;
}
echo doSomething('Bob Tester');