【问题标题】:Static HTML or PHP generated HTML?静态 HTML 还是 PHP 生成的 HTML?
【发布时间】:2011-07-26 02:21:44
【问题描述】:

我最近阅读了很多 PHP 教程,并且不断看到“帮助类”的示例,这些示例主要用于生成典型的 HTML 组件。表格似乎很受欢迎。

我可以接受这可能会使代码更清晰一些,因为我非常熟悉将 html 与 php 啮合的“笨拙”。有什么“其他”原因吗?某种性能优势?我明白为什么如果你的网站在不同的地方有 100 个表单会很好,但如果你只有一两个表单,这似乎是不必要的工作。

【问题讨论】:

  • 主要是为了可重用性和可维护性,IMO。
  • 哇,谢谢大家,这么快的反应,我没想到:O.

标签: php html class


【解决方案1】:

想到了易用性和快速开发。使用 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,我们现在需要让所有密码 input 元素在 IE6 中都有一个红色边框。

...你可能会想...

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

...所以你可以进入你的 input 生成函数并在那里添加一个 class ,你可以在你的 CSS 中引用它。它还将使从 /&gt; 更改为 &gt; 也变得同步(如果您决定这样做的话)。

【讨论】:

    【解决方案2】:

    考虑您给出的示例 - 表单构建器。

    表单的关键在于您需要的不仅仅是 HTML。您还需要将这些输入字段映射到变量,需要验证它们,需要将它们保存到数据库中,需要使用数据库中的数据预先填充它们。

    一个好的表单构建器类可以处理其中的大部分。如果您手动构建 HTML 代码,您仍然可以轻松地对其进行修改,但您必须编写自己的验证和处理例程。

    这就是使用预建类的好处。

    当然,也有不利的一面。通常,像这样的类可以很容易地创建满足创建类的人的设计标准的表单。但是,如果您的要求与此稍有不同,那么强制它执行您想要的操作可能会非常棘手。

    不过,大多数情况下它运行良好。

    【讨论】:

      【解决方案3】:

      由于选择表单助手或库可能会有所帮助的原因,您可以查看我最近发布的问题A PHP and jQuery form creation and validation library available?

      经常给你的:

      • 一种简单的验证方法
      • 有时包括客户端验证
      • 表单可重用性
      • 开发速度更快

      【讨论】:

        猜你喜欢
        • 2017-05-14
        • 1970-01-01
        • 2023-03-10
        • 2018-06-12
        • 1970-01-01
        • 1970-01-01
        • 2013-05-04
        • 2011-02-20
        • 2015-09-07
        相关资源
        最近更新 更多