需要一些使用PHP / HTML进行模板化的建议

时间:2011-04-02 01:01:38

标签: php html templates

我看了this帖子,我真的很喜欢这个模板解决方案,但我不确定一件事。有了这个系统,业务逻辑和表示逻辑不会在两个不同的php文件中吗?这一切都很好,因为它将它们分开,但如果某些页面上只有表示逻辑,或者如果业务逻辑的数量非常少,该怎么办?

用户页面的默认页面有时只是表示逻辑,有时只是业务逻辑,这似乎很奇怪。似乎有两个明显的解决方案:

1)让所有默认页面都具有链接到不同页面上的表示逻辑的业务逻辑(即使没有)。这个问题是有很多“不必要的”页面。好处是它是一致的。

2)如果页面没有业务逻辑,那么只包括表示逻辑。这样做的问题在于,在查看文件名时,哪些php页面包含业务和表示逻辑,它是不一致的。

此外,这可能有点偏离主题,但有没有办法对此进行模板化?

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>My Website</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <link href="styles.css" rel="stylesheet" type="text/css"/>
        <link href="favicon.png" rel="shortcut icon" />
    </head>
    <body>
    </body>
</html>

考虑到我在每个页面上都有这个,我想知道是否有办法对此进行模板化,以便代码可以全部放在一个文件中并进行调用。

1 个答案:

答案 0 :(得分:4)

您的模板应包含严格的表示逻辑。

这意味着您可以包含:

  • 循环(打印列表等)
  • 条件(例如,如果某个值非空,则仅打印元素)
  • 格式化功能(剥离空格,舍入数字等)
  • 少量模板组合助手函数调用(例如“请在此处包含此其他子模板”)

没有别的 - 尤其不是商业逻辑!(如果我忘了重要的事情,请在评论中提及)

此外,您的模板(“视图”)不应该用作应用程序使用的目标URL。您应该让URL指向(可能是其中之一)“控制器”脚本,然后调用必要的业务逻辑并将结果传递给模板,以便通过包含模板进行显示。如果您熟悉模型 - 视图 - 控制器,您会发现这很容易掌握;如果你不是,请先熟悉自己。

最后,您可以通过以下方式模拟您提供的标记:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title><?php echo $title;?></title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<?php foreach ($stylesheets as $stylesheet) : ?>
        <link href="<?php echo $stylesheet;?>" rel="stylesheet" type="text/css"/>
<?php endforeach; ?>
        <link href="favicon.png" rel="shortcut icon" />
    </head>
    <body>
    </body>
</html>