回应HTML代码而不是PHP

时间:2011-05-07 11:26:25

标签: php

我应该更喜欢其中一个片段而不是其他片段吗?

1

function render()
{
    echo "<div>$content</div>";
}

2

function render()
{
    ?>
    <div><?= $content ?></div>
    <?php
}

2 个答案:

答案 0 :(得分:8)

两者都不是个好主意。 原因功能是输出。尝试这样做:

function render( $content_, $style_ )
{
    $res = "<div{$style_}>$content_</div>";
    return $res;
}

...

然后:

echo render( "Content inside div", " style='color:red;'" )

原因:

  1. 功能计算返回,其主要目的是此。
  2. 正在生成应用程序,它可以使用函数进行准备。
  3. 您可能需要在将来制作一些标题,并且好主意是在脚本结束时启动所有输出。使用像Smarty这样的模板,所以 - 将为你节省很多时间:)

答案 1 :(得分:6)

作为一般规则,最好将构成应用程序的每个文件的内容尽可能保持整洁。由于PHP是一种模板语言,并且您可以将PHP文件用于完全不同的目的(考虑到包含纯HTML的文件是有效的PHP文件),我的个人偏好是:

如果您需要在代码中创建一小部分HTML,请不要打开和关闭PHP标记。

例如,更喜欢这个:

function render()
{
    echo "<div>$content</div>";
}

对此:

function render()
{
    ?><div><?= $content ?></div><?php
}

另请注意,在上面的代码片段中,我没有在PHP关闭标记之后或PHP开放标记之前包含任何空格;通常,HTML中的空格并不重要,但在两种情况下它可能很重要:

  • 您希望获得良好的缩进HTML(有时在开发时有用)
  • 一个或多个空格字符的存在与无关在DOM树中创建一个额外的文本节点,这可能很重要

如果你想在HTML中包含这种空格,那么在任何情况下你的源代码都会有点丑陋,但如果你采用close / open标签方法肯定会更加丑陋。

在视图中隔离大块HTML,并根据需要包含一些逻辑。

例如,更喜欢这个:

<body>
  <div id="blah">
    <ul id="nav">
      <?php foreach ($navItems as $url => $title) : ?>
      <!--
      NOTE:
      You can opt to make the line below a single echo statement
      in PHP rather than HTML with values from PHP substituted
      in various places inside, and in this example it might even
      be better. However, if the output for each item is more complex
      than a li/a pair, it will be far more readable in this form.
      -->
      <li><a href="<?php echo $url ?>"><?php echo $title ?></a></li>
      <?php endforeach; ?>

对此:

$output = '<body><div id="blah"><ul id="nav">';
foreach ($navItems as $url => $title) {
    $output .= '<li><a href="'.$url.'">'.$title.'</a></li>
}

echo $output;