15

只是为了澄清:“回声与打印”和“双引号与单引号”的问题是完全理解的,这是另一回事:

是否有任何理由让人更喜欢:

echo '<table>';   
foreach($lotsofrows as $row)
{
    echo '<tr><td>',$row['id'],'</td></tr>';   
}
echo '<table>';

超过:

<table><?php
       foreach($lotsofrows as $row)
       { ?>
           <tr>
              <td><?php echo $row['id']; ?></td>
           </tr><?php
       } ?>
</table>

是否会更快地执行/解析?更优雅?(ETC。)

我倾向于使用第二个选项,但我担心我可能会忽略一些明显/必要的东西。

4

6 回答 6

9

我同意彼得·贝利的观点。但是,在视图中,我使用语句的替代语法,并且更喜欢短标签(尤其是回显)。所以上面的例子改为:

 <table> 
  <? foreach($lotsofrows as $row): ?>
  <tr>
    <td><?= $row['id']; ?></td>
  </tr>
  <? endforeach; ?>
 </table>

我相信这是 Zend Framework 的首选标准。

于 2009-09-08T15:21:32.390 回答
9

第一个的好处

  • 更容易阅读
  • ???

第二个的好处

  • 所见即所得是可能的
  • 某些 IDE 可以完成 HTML 代码完成/标签匹配
  • 没有逃避的头痛
  • 更容易处理更大的 HTML 块

如果我在给定的 PHP 例程(如 MVC 视图)中有很多 HTML,那么我肯定会使用第二种方法。但我的格式不同——我严格依赖 PHP 分界的类似标签的性质,即,我使 PHP 部分看起来尽可能像 HTML 标签

<table>
  <?php foreach($lotsofrows as $row) { ?>
  <tr>
    <td><?php echo $row['id']; ?></td>
  </tr>
  <?php } ?>
</table>
于 2009-09-08T15:13:38.257 回答
6

在我看来,第一个更具可读性,但是,第二个在技术上涉及较少的解析。在这种情况下,任何速度优势都可能是微不足道的,如果不进行分析,实际上毫无意义。

过早的优化是万恶之源。做使代码最容易阅读和维护的事情。效率让位于可维护性。

有关该主题的一些好的建议,请参见http://en.wikipedia.org/wiki/Optimization_%28computer_science%29#When_to_optimize

于 2009-09-08T15:00:00.083 回答
3

你写的东西非常可靠。PHP 可以用作编程语言,也可以用作简单而强大的 Web 模板语言。混合这两种用法非常非常糟糕,长期支持将是可怕的。

因此,第二种风格在具有大量 html 标记和少量代码的模板中更有用,首先 - 用于“清晰”的 php 编程。

于 2009-09-08T15:12:49.710 回答
2

最好的一个是模板引擎。

但是,我认为 echo 比随处可见的打开和关闭标签(我不太了解 PHP 内部结构,无法判断哪个不过更快)。

于 2009-09-08T15:01:41.377 回答
2

从编程的角度来看,第一个更具可读性,但第二个允许您在某些 WYSIWYG HTML 编辑器中打开文件并更改页面设计。

我更喜欢第二个选项,因为它更容易告诉你的设计师“页面的这部分行为会像那样”,而不是“这段代码会那样做”

于 2009-09-08T15:15:53.663 回答