假设我想在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本身就是模板引擎。
答案 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效果更好。