使用分层PHP/HTML设计?是这样吗?
我在某个地方读到,你应该把你的网页分成3层:获取、逻辑、表示使用分层PHP/HTML设计?是这样吗?,php,html,coding-style,standards,codeigniter,Php,Html,Coding Style,Standards,Codeigniter,我在某个地方读到,你应该把你的网页分成3层:获取、逻辑、表示 获取:从数据库/会话等获取信息 逻辑:计算你需要什么 演示:显示HTML 首先,这是个好主意吗?我可以看到一些明显的好处(组织,易于修改)。第二,鉴于这个模型呼应出HTML是不好的,我应该将想要的HTML存储在变量中吗 例如: <?php /** fetch **/ include("session_validator.php"); $secret = $_GET['secret']; mysql_connect($h
- 获取:从数据库/会话等获取信息
- 逻辑:计算你需要什么
- 演示:显示HTML
<?php
/** fetch **/
include("session_validator.php");
$secret = $_GET['secret'];
mysql_connect($host, $user, $pass);
// connect and query
$username = mysql_result($result, 0, 'username');
/** logic **/
if (isset($secret)) {
$message = "You know the secret!";
} else {
$message = "The secret is wrong";
}
/** presentation **/
?>
<html>
<body>
Username: <?php echo $username; ?> <br>
Secret? <?php echo $message; ?>
</body>
</html>
用户名:
秘密
重申我的问题,在演示之前将我的信息存储在
$message
中并关闭PHP
部分是一个好主意吗?还是我误解了整个分层概念?这种设计通常被称为MVC(模型-视图-控制器),它与您描述的有点不同:
- 控制器-接收请求并处理请求的部件。它同时调用模型和视图
- 模型-逻辑部分,这是繁重的PHP编码将发挥作用的地方。这是从数据库/文件中获取信息、进行计算,然后将数据返回到控制器的部分
- 视图-应用程序的表示部分,通常它主要包含HTML(和/或其他客户端语言),它是呈现给客户端的页面。控制器将数据从模型传递给它,然后它可以被解析(视图通常允许PHP代码在其中)并显示
我认为这是一个很好的模式,因为它允许清晰的分离和易于维护。它还允许您在前端和后端之间分离工作(特别是如果您的每一方都有不同的开发人员!) 至于回显部分,回显HTML的唯一位置是在视图中,因此没有问题
我建议您查看一个有良好文档记录的框架(如),然后开始阅读。此设计通常被称为MVC(模型视图控制器),它与您描述的有点不同:
- 控制器-接收请求并处理请求的部件。它同时调用模型和视图
- 模型-逻辑部分,这是繁重的PHP编码将发挥作用的地方。这是从数据库/文件中获取信息、进行计算,然后将数据返回到控制器的部分
- 视图-应用程序的表示部分,通常它主要包含HTML(和/或其他客户端语言),它是呈现给客户端的页面。控制器将数据从模型传递给它,然后它可以被解析(视图通常允许PHP代码在其中)并显示
我认为这是一个很好的模式,因为它允许清晰的分离和易于维护。它还允许您在前端和后端之间分离工作(特别是如果您的每一方都有不同的开发人员!) 至于回显部分,回显HTML的唯一位置是在视图中,因此没有问题
我建议你看看一个有良好文档记录的框架(例如),然后开始阅读。这是一种有效的方法。但是,当您在HTML中输出变量时,应该确保正确地转义它。直接从PHP执行这项操作意味着使用htmlentities()。我建议您围绕它编写一个包装函数,因为它需要的参数有点繁琐 您还可以使用诸如Twig或Smarty之类的模板引擎,这通常会使转义更容易,并提供用于处理布局的结构 然而,你的方法没有错。只要在实际代码和显示逻辑之间有一个明确的分离,您就不会在将来遇到太多麻烦。您可以将HTML部分移动到一个单独的文件中,并将其从另一个页面包括进来,以使分离更加清晰
我自己使用框架,但如果你还在学习,保持它的简单并不是一件坏事。这是一种有效的方法。但是,当您在HTML中输出变量时,应该确保正确地转义它。直接从PHP执行这项操作意味着使用htmlentities()。我建议您围绕它编写一个包装函数,因为它需要的参数有点繁琐 您还可以使用诸如Twig或Smarty之类的模板引擎,这通常会使转义更容易,并提供用于处理布局的结构 然而,你的方法没有错。只要在实际代码和显示逻辑之间有一个明确的分离,您就不会在将来遇到太多麻烦。您可以将HTML部分移动到一个单独的文件中,并将其从另一个页面包括进来,以使分离更加清晰
我自己使用框架,但如果你还在学习,保持简单并不是一件坏事。我个人使用一个面向对象的php框架来处理所有正在进行的任务,这使得接收请求的页面只有5行(大约)长。这样做更好,因为这样以后您就可以关注视图,并将所有代码放在同一个位置,这样您就不必到处寻找它
但是请相信我,当我这么说的时候,每个程序员都有自己不同的方法,这样做就不会有错误的方法。我个人使用一个面向对象的php框架来处理所有正在进行的任务,这使得接收请求的页面只有5行(大约)长。这样做更好,因为这样以后您就可以关注您的视图,并将所有代码放在同一个pla中