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>";
}
}
?>
我更喜欢第二种选择,因为它更易于实现和阅读。即便如此,输出也是类似的。但我无法弄清楚我应该把编码习惯放在哪里。
答案 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-0,PSR-1,PSR-2和PSR-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)
作为开发者,您真的应该选择自己喜欢哪一个。你说你更喜欢第二种选择,所以为什么不使用它。