我读到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>
考虑到我在每一页上都有这个,我想知道是否有一种方法可以对其进行模板化,以便代码可以全部放在一个文件中并被调用。
最佳答案
您的模板应包含严格的表示逻辑。
这意味着您可以包括:
- 循环(打印列表等)
- 条件(例如,仅在某个值非空时才打印元素)
- 格式化函数(去除空格、舍入数字等)
- 少量模板组合辅助函数调用(例如“请在此处包含此其他子模板”)
但是没有别的——尤其是业务逻辑!(如果我忘记了一些重要的事情,请在评论中提及)
此外,您的模板(“ View ”)永远不应该用作应用程序使用的目标 URL。您应该让 URL 指向(可能是多个)“ Controller ”脚本,然后该脚本调用必要的业务逻辑并将结果传递到您的模板以通过包含模板进行显示。如果您熟悉模型- View - Controller ,您会发现这很容易掌握;如果您不熟悉,请先熟悉一下。
最后,这是一种可以模板化您所提供的标记的方法:
<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>
关于php - 需要一些关于 PHP/HTML 模板的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5520394/