回应HTML代码而不是PHP

Ema*_*sev 1 php

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

1.

function render()
{
    echo "<div>$content</div>";
}
Run Code Online (Sandbox Code Playgroud)

2.

function render()
{
    ?>
    <div><?= $content ?></div>
    <?php
}
Run Code Online (Sandbox Code Playgroud)

pub*_*com 8

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

function render( $content_, $style_ )
{
    $res = "<div{$style_}>$content_</div>";
    return $res;
}
Run Code Online (Sandbox Code Playgroud)

...

然后:

echo render( "Content inside div", " style='color:red;'" )
Run Code Online (Sandbox Code Playgroud)

原因:

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


Jon*_*Jon 6

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

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

例如,喜欢这个:

function render()
{
    echo "<div>$content</div>";
}
Run Code Online (Sandbox Code Playgroud)

对此:

function render()
{
    ?><div><?= $content ?></div><?php
}
Run Code Online (Sandbox Code Playgroud)

另请注意,在上面的代码片段中,我没有在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; ?>
Run Code Online (Sandbox Code Playgroud)

对此:

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

echo $output;
Run Code Online (Sandbox Code Playgroud)