此/最佳实践的首选格式?

时间:2010-07-19 22:08:14

标签: php code-formatting

假设我想在PHP中创建一个选择框。

$months = array ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

选项1:

<select name="month">
    <option value="">Month</option>
    <option value="">-------</option>
    <?php foreach ($months as $monthNum => $month) { ?>
    <option value="<?php echo $monthNum+1 ?>"><?php echo $month ?></option>
    <?php } ?>
</select>

选项2:

<select name="month">
    <option value="">Month</option>
    <option value="">-------</option>
    <?php 
        foreach (months() as $monthNum => $month) 
            echo '<option value="' . ($monthNum+1) . '">' . $month . "</option>\n"; 
?>
</select>

我个人认为选项1使代码更难以阅读和理解,同时选项2会修改缩进并将更多HTML放入PHP中。

首选哪个选项?

编辑:我不想在PHP之上添加另一个模板引擎,PHP本身就是模板引擎。

6 个答案:

答案 0 :(得分:2)

选项2毫无疑问,语义在哪里是php是php其中html是html

答案 1 :(得分:2)

我认为第二种选择更好,因为像<option value="<?php echo $monthNum+1 ?>">这样的东西很难阅读和理解,甚至有点不合逻辑(标签中的标签。)

但说实话,使用你更喜欢的东西。只有一个建议:也许不使用有时难以理解的<?php foreach () { ?> ... <?php } ?>,您可以使用以下语法:<?php foreach (): ?> ... <?php endforeach; ?>。特别是如果你开始在fors中使用foreors,而这些语法可能会更容易理解。

答案 2 :(得分:1)

我会去a)为你和你的同事维护更容易的东西和b)一致性。

如果您(和您的同事)认为1更难阅读和理解,那么请不要使用它。在6/12/18个月回到代码时,它将比现在更难理解。

答案 3 :(得分:1)

就个人而言,我使用选项1,因为我认为将HTML和PHP代码尽可能分开是一个至高无上的优先事项。

如果有帮助,我经常使用简写<?= 'value'; ?>代替<?php echo 'value'; ?>

答案 4 :(得分:1)

我认为选项1完全可以阅读。但是,如果你最不喜欢孤独的话,你可以使用php's alternativ syntax(使用endforeach)。

答案 5 :(得分:0)

在我看来,选项2读起来像一个吐出一些字符串的脚本,其中选项1读起来就像一个带有嵌入式PHP代码的HTML模板。对于MVC框架中的视图模板,我发现选项1是最好看且最容易阅读的。对于CLI或其他目的,选项2效果更好。