我正在从一本书中学习PHP(没有编程经验)。本书中的示例使用一种奇怪的方式来有条件地输出大块HTML。它关闭条件内的PHP标记,并在输出HTML后重新打开它。我理解(在经过一些努力之后)它是如何工作的,但它似乎是一个狡猾的,不打算使用的,这样的解决方法。
<?php
if(something == somethingelse) {
echo "some message";
}
else {
?>
<big-block-of-html>
</big-block-of-html>
<?php }
?>
这本书确实介绍了heredoc语法,但从未使用它。有没有正确的方法呢?从PHP中输出HTML似乎更直观。
答案 0 :(得分:11)
这正是PHP应该如何使用,并且比所有替代品更具可读性,优雅性和稳健性*。我只是想要更好的缩进风格:
<?php
// normal
// code
// here
?>
<?php if ($foo) : ?>
<div>
<!-- more HTML -->
</div>
<?php endif; ?>
*除非您选择像Smarty这样完全无代码的模板......
答案 1 :(得分:1)
考虑在其他文件中隐藏此块。 然后你可以创建这样的函数:
function get_some_big_block_content()
{
return get_file_contents('./your_big_block.html');
}
然后你可以:
<?php
if(something == somethingelse) {
echo "some message";
}
else {
echo get_some_big_block_content();
}
?>
答案 2 :(得分:0)
PHP允许多种方式执行此操作;选择一个主要是一个偏好的问题 - 对于一些人来说,这是最可读的选择,对某些人来说这是一个可怕的黑客。
总之,内联HTML很难以任何形式进行维护 - 如果你在网站上付出了很多努力,可以考虑某种模板系统(例如Smarty)和/或框架(例如Symfony),否则你就是'我会因为试图维护PHP + HTML汤而疯狂。
答案 3 :(得分:-1)
使用
<?php
if (something == somethingelse) {
echo "some message";
}
else {
echo "<big-block-of-html>
</big-block-of-html>";
}
?>