我看了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>
考虑到我在每个页面上都有这个,我想知道是否有办法对此进行模板化,以便代码可以全部放在一个文件中并进行调用。
答案 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>