用echo输出HTML在PHP中被认为是不好的做法?

在PHP中,我使用if语句来确定用户是否已登录,并根据结果显示主菜单(如果已登录)或者“需要登录”消息,如果没有。 我这样做是这样的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <link rel="stylesheet" href="style.css" type="text/css" />
    <title>Home</title>
</head>
<body>
    <div id="header">
       <a href="index.php"><img src="wtcdblogo.png" alt="WTC DB logo" /></a>
    </div>
    <?php 
       if($_SESSION['loggedIn'] == 1) {
          echo "<div id='main'>MAIN MENU stuff goes here</div>";
       } else {
          echo "<div id='main'>Please login...</div>";
       } 
    ?>
</body>
</html>

如您所见,显示主菜单或“请登录”消息的代码由echo 。 这是不好的做法,也许有更好的办法?

顺便说一下,我在上面的代码片断中删除了echo的大部分HTML。 主菜单是由一个列表组成的,但我没有理会,因为它与这个问题无关,我想。


我认为这是不好的做法。 不确定其他人的想法。 首先,它在语法高亮的文本编辑器中看起来很糟糕,那么你不得不担心转义字符串等等。

这是我如何做到的:

   <div>
      <? if ($_SESSION['loggedIn'] === 1): ?>
         <div id="main">Main Menu stuff goes here</div>
      <? else: ?>
         <div id="main">Please log in...</div>
      <? endif ?>
   </div>

您可以跳出PHP标签并直接使用HTML。 这样做有利有弊。 我喜欢这种方式比回应东西更好。 其他选择是根据if语句的结果对这些领域提出新的观点。 很多的可能性,但上述只是一个方法,使一点更清洁,(我认为)更好。


适度使用html时,echo没有任何问题。 只是不要将它用于较长的多行块。 你总是会得到一些丑陋的结构,需要逃避和什么,这使得事情更加丑陋。

如果你输出的html是“静态的”(不需要插入变量),那么考虑打破OUT模式( ?> )并简单地转储html。 如果你确实需要插入变量,那么可以考虑使用一个HEREDOC,它像一个双引号字符串,但没有引号。


为什么不把它写成这样?

<?php if($_SESSION['loggedIn'] == 1): ?>
    <div id='main'>MAIN MENU stuff goes here</div>
<?php else: ?>
    <div id='main'>Please login...</div>
<?php endif; ?>

使用替代控制结构将代码从您的代码中分离出来。

链接地址: http://www.djcxy.com/p/92671.html

上一篇: Outputting HTML with echo considered bad practice in PHP?

下一篇: Extract HTML of a Scraped Page Using PHP's DOM