静态HTML还是通过PHP生成HTML?

8

最近我一直在阅读很多PHP教程,看到了很多"helper classes"的例子,这些类主要用于生成典型的HTML组件。表单似乎很受欢迎。

我可以理解这可能会使代码更清晰,因为我太熟悉将html与php混合使用所带来的麻烦。但是除此之外还有其他原因吗?有性能方面的好处吗?如果你的网站只需要有一两个表单,那么似乎并不需要进行这样的操作。


3
在我看来,主要是为了可重用性和可维护性。 - KJYe.Name
哇,谢谢大家的回复,速度这么快,我没想到会这样 :O。 - zdkroot
3个回答

10

易用性和快速开发是首先想到的。使用PHP生成HTML的性能实际上会更慢,但我怀疑它会成为您应用程序的瓶颈(而且您可以缓存大部分HTML输出)。

例如,这两个哪一个看起来更容易实现...

<?php 
 $name = 'abc';
 $options = array('a', 'b', 'c');
 $selected = 2;
?>

示例 1

<?php echo form::select($name, $options, $selected); ?>

例子 2

<select name="<?php echo $name; ?>">
<?php foreach($options as $value => $node): ?>
   <option
     value="<?php echo $value; ?>"
     <?php echo ($selected === $index) ? ' selected="selected"' : NULL; ?>
   >
   <?php echo $node; ?>
   </option>
<?php endforeach; ?>
</select>

我认为你会发现第一个例子更易于阅读、输入更少,而且每次都能保证正常工作(只要你正确编码)。


另外,如果你的老板说...

嘿,zdkroot,我们现在需要在IE6中使所有密码元素拥有红色边框。

...你可能会想...

我知道了,我会使用input[type="password"] { ... }。但等等,IE6不支持这个吗?

...所以你可以进入你的input生成函数并在那里添加一个class,然后在你的CSS中引用它。如果你决定这样做,将从/>改为>也会很轻松。


4
考虑你提出的例子 - 表单构建器。
表单需要的不仅是HTML。您还需要将这些输入字段映射到变量,验证它们,将它们保存到数据库中,并使用来自数据库的数据预填充它们。
一个好的表单构建类将处理大多数这些任务。如果您手动构建HTML代码,仍然可以轻松修改它,但是您必须编写自己的验证和处理程序。
这就是使用预构建类的好处。
当然,还有缺点。通常,像这样的类会使创建符合创建类人员设计标准的表单非常容易。但是,如果您的要求与此略有不同,强制它做您想要的事情可能会非常棘手。
不过,大多数情况下都能很好地工作。

3
为什么表单帮助程序或库可能会有所帮助,你可以查看我最近发布的一个问题:是否有可用的PHP和jQuery表单创建和验证库? 通常它们会提供以下功能:
  • 简单的验证方式
  • 有时会包含客户端验证
  • 表单重用性
  • 更快的开发速度

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接