【问题标题】:How to structure php that generates html如何构造生成html的php
【发布时间】:2012-05-24 20:42:54
【问题描述】:

我有一个 php 文件和一堆 HTML 元素,其中包括:

  1. 标题
  2. CSS
  3. 重复使用的“间隔”元素,静态
  4. 一组模板,它们将从 PHP 代码中获取要插入的内容的参数

基本上,我想知道将所有这些文件放入其中的正确方法是什么。我猜我的文件夹中应该有一个 file.css,php 会吞入内存并放入标题信息。间隔元素是否应该保存为“spacer.html”,PHP 将把它的一个副本吞入一个字符串并在必要时将其放入 HTML 中?还是所有这些都应该作为字符串常量存在于 PHP 中?

动态“模板”元素有点棘手,因为我不知道如何分离 HTML 并让它有参数被放入的标记。

【问题讨论】:

    标签: php html code-organization html-generation


    【解决方案1】:

    您应该查看 MVC。现在流行的一个是CodeIgniter。这个想法是您使用那些 HTML“模板”并创建 (V) 视图。 PHP 使用 (C) 控制器来引导用户并调用 (M) 模型来获取数据,然后将适当的变量发送到浏览器的 (V) 视图。

    【讨论】:

    • 其他框架选项包括AgaviSymfony2NetteYafZend FrameworkQCodoLithiumYii 等等。
    • MVC 是 Web 开发中最常用的模式之一。去这里:ootips.org/mvc-pattern.html 了解更多信息。
    • 这一切听起来都很好,但是你能指出我正确的方向吗?如何使用它来解决我的模板化 HTML 代码问题?
    • djechlin:每个“模板”都是一个视图。您的控制器层可能会将 JSON 处理为对象以传递到您的视图中。
    【解决方案2】:

    我注意到其他一些回答者 (SP) 提到了 MVC。 MVC 非常重要,因为它允许您将业务逻辑与“视图”显示/UI 层以及数据库逻辑与业务逻辑分开。

    就像 AlienWebguy,我推荐 Code Igniter,但还有许多其他优秀的 PHP 框架。

    就您所问的问题而言,您应该如何构建视图层和业务逻辑。如果我有一些常见的东西,比如页眉和页脚,我会把它们放在

    view/include/header.phpview/include/footer.php

    头文件通常包含<html> 标记、样式表链接、任何常见的javascript 脚本文件和一个常见的头文件(如徽标和导航)。页脚文件通常包含版权信息、任何页脚链接和</body></html>

    通常,在有效地创建视图时,您应该考虑让它们处理模型对象以显示 HTML,并且在您的控制器层中绝对不生成任何 HTML。例如

    <table>
    <?php
    foreach ($users as $user) {
        printf('<tr><td>%s</td><td>%s</td></tr>', $user->id, $user->user_name);
    }
    ?>
    </table>
    

    这样做可以避免在错误的“层”上散布关注点,从而使事情变得更清晰。

    如果您对在视图中直接编写 PHP 不感兴趣,您可以做的另一件事是使用模板引擎。代码点火器包括对(但您不必使用)模板引擎的支持。

    【讨论】:

    • @Joy:请考虑仅将代码格式添加到实际代码中(HTML 标记、路径、类名等)。将它添加到每个流行语中都会让人分心。
    • @eldarerathis 感谢您的建议。从现在开始,我会牢记这一点。
    【解决方案3】:

    我通常建议使用一些好的 ol' php 包含来解决这个问题。

    明智的文件结构,我可能有一个index.php 文件——它(对#4 中的模板不太了解)将概述页面。您可以调用header.html 页面或将标题放在index.php 文件中。

    css 文件最好命名为:style.css(这是非常标准的),您可以从头文件中调用它。

    不确定您是否了解这一点,但您可以在.php 文件中包含 HTML。您只需将文件命名为:index.php,然后您的代码可以是:

    <p>This is HTML.</p>
    
    <?php echo("This is PHP."); ?>
    

    并将它们混合在一起。

    【讨论】:

    • 我同意@AlienWebguy 关于使用MVC 框架的观点。如果您有一个大型或复杂的 PHP 应用程序,那么这是要走的路。我的回答假设您只有几个文件并且正在做一些简单的事情。
    • 有一个动态数量的模板,其输入将由存储在数据库中的 JSON 字符串指定,如果这让您知道这是几行还是简单的东西:P
    • 如果您只需要 1 个 php 文件来完成所有模板和数据库提取(解析 JSON 并输出模板需要的任何内容),那么我会说这很简单,并且坚持简单的布局。如果您需要多个 PHP 文件来处理数据库中不同类型的模板,请使用 MVC 框架。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多