【发布时间】:2012-01-08 07:47:11
【问题描述】:
我正在从一个现有的程序员那里接手一个项目,老实说,他把项目留在了一大堆无法维护、不可读的混乱中(编辑/澄清:几十个独立的 .php由 php/html/css 组成的页面都引用了一个巨大的 1500 行“functions.php”文件,ack)
话虽如此,似乎几乎到处都有变量、数组等,他使用了 printf()。
例如,不要使用:
foreach($thing as $t) {
echo "<option value='".$t."'>".$t."</option>";
}
他会使用类似的东西:
foreach($thing as $t) {
printf("<option value='%s'>%s</option>", $t, $t);
}
有没有人知道他为什么要这样做?使用 printf() 代替 echo/print 是否有一些我不知道的未知好处?
请注意,这不仅适用于可能需要验证/清理的值,还适用于所有内容。从数据库中提取的数据、在其他地方定义的随机变量和数组,绝对一切都是 printf() 而不仅仅是 echo 或 print,我试图弄清楚他为什么会使用这种方法,因为它可能有助于我理解逻辑在他建造的一些东西背后。
【问题讨论】:
-
也许在某些时候覆盖输出翻译?
-
说得好,但在这个项目中根本没有翻译任何东西......一种语言从头到尾。
-
几周前与一位脾气暴躁的老 C 程序员交谈时,我很高兴得知他在所有事情上都使用 printf,即使他涉足 PHP。莫非你的前任是其他语言出身,没有完全学过PHP?
-
它可能会更整洁,因为您可以立即发现变量。此外,您无需担心转义深度嵌套的数组键。最后,您可以使用未解析的字符串 (
'') 而不是解析的字符串 ("") 以获得额外的性能,或者至少是控制。 -
我已编辑您的代码以进行更多票价比较。您的原始代码示例似乎暗示
printf明显更长且更复杂,而实际上您使用printf版本生成了更复杂的输出。现在他们做同样的事情,你可以看到线条的视觉复杂度几乎没有差异,可能更小。
标签: php mysql validation variables printf