这些非语法和替代语法之间有什么区别

时间:2015-10-09 02:15:36

标签: php

1。替代语法

<?php if ($pager instanceof sfPropelPager): ?>
<?php foreach ($pager->getResults() as $iNo => $item): ?>
    <tr class="<?php echo $iNo % 2 == 0 ? "dataRowOdd" : "dataRowEven";?>" style="height: 20px;">
        <td>
            <?php echo "<a href='extData/extView?id={$item->getId()}'></a>" ?>
        </td>
        <td>
            <?php echo $item->getDate("d.m.Y");?>
        </td>
    </tr>
<?php endforeach; ?>
<?php endif;?>

2。非替代语法?

<?php
  if ($pager instanceof sfPropelPager)
  {
      foreach ($pager->getResults() as $iNo => $item)
      {
          $rowClass = $iNo % 2 == 0 ? 'dataRowOdd' : 'dataRowEven';
          echo "<tr class='$rowClass' style='height: 20px;'>";
          echo "<td> <a href='extData/extView?id={$item->getId()}'>#{$item->getId()}</a> </td>";
          echo "<td> {$item->getDate('d.M.Y')} </td>";
          echo "</tr>";
      }
  }
?>

我更喜欢第二种选择,因为它更易于实现和阅读。即便如此,输出也是类似的。但我无法弄清楚我应该把编码习惯放在哪里。

3 个答案:

答案 0 :(得分:2)

第二代码看起来更清晰,更易于阅读,但我仍然更喜欢使用heredoc来避免混淆引号和分号,即:

  if ($pager instanceof sfPropelPager)
  {
      foreach ($pager->getResults() as $iNo => $item)
      {
          $rowClass = $iNo % 2 == 0 ? 'dataRowOdd' : 'dataRowEven';
          echo <<< LOL
          <tr class='$rowClass' style='height: 20px;'>
          <td> <a href='extData/extView?id={$item->getId()}'>#{$item->getId()}</a> </td>
          <td> {$item->getDate('d.M.Y')} </td>
          </tr>
LOL;

      }
  }

Heredoc对于html混合php的长块非常方便。请注意,heredoc结束语句(LOL;必须在该行的开头。

  

PHP社区庞大而多样,由无数组成   库,框架和组件。这对PHP开发人员来说很常见   选择其中几个并将它们组合成一个项目。它   PHP代码遵循(尽可能接近)公共是很重要的   代码样式,使开发人员可以轻松地混合和匹配各种   他们的项目的图书馆。

     

Framework Interop Group提出并批准了一系列   风格推荐。并非所有这些都与代码风格相关,但是   那些人PSR-0PSR-1PSR-2PSR-4。   这些建议仅仅是一些项目的一套规则   像Drupal,Zend,Symfony,CakePHP,phpBB,AWS SDK,FuelPHP,Lithium,   等开始采用。您可以将它们用于您自己的项目,或   继续使用你自己的个人风格。

<强>资源:

http://www.phptherightway.com/#code_style_guide(绝对检查这个网站!)
http://www.php-fig.org/
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md

答案 1 :(得分:2)

对于第一个示例您使用Alternative syntax

<强>优点:

  • 它们更短。
  • 他们很容易写

<强>缺点:

  • 但我不建议使用它们,因为使用替代语法时可能会导致一些语法错误。例如:白色空间
  • 当涉及到巨大的代码时......你可能会发现很难 每个陈述并找出错误。

另外,对于您的第二个示例,您可以更改echo部分。因为您总是回应它。您可以像下面一样使用它。

$html = '';

if ($pager instanceof sfPropelPager)
  {
      foreach ($pager->getResults() as $iNo => $item)
      {
          $rowClass = $iNo % 2 == 0 ? 'dataRowOdd' : 'dataRowEven';
          $html .= "<tr class='$rowClass' style='height: 20px;'>";
          $html .= "<td> <a href='extData/extView?id={$item->getId()}'>#{$item->getId()}</a> </td>";
          $html .= "<td> {$item->getDate('d.M.Y')} </td>";
          $html .= "</tr>";
      }

      echo $html;
  }

答案 2 :(得分:1)

作为开发者,您真的应该选择自己喜欢哪一个。你说你更喜欢第二种选择,所以为什么不使用它。