实现SQL-Labs第一关的功能,后台PHP需要成的工作大概如下:
index.php 源码文件不仅包含两种编程语言,还包含多种功能。对于规模稍大的项目,这样的写法会给开发者带来很多问题,比如:
前端html主要用于展示,与后端逻辑程序有本质区别,所以考虑把视图和逻辑代码分离。
index.php 文件用来连接数据库并查询数据,通过包含 view.php 前端代码文件来展示数据 。
连接数据库和获取数据的逻辑和HTML分开了. 有的时候你可能要返回的是其它格式的数据, 比如说json格式的和xml格式的, 你只需要更换模板就可以了. 而不用动控制器里的逻辑代码.
按照惯例, index.php 文件包含了所有的逻辑代码, 被称为”控制器”. 不管你用什么编程语言, 什么框架.,“控制器”这个术语你可以听了N遍了. 它处理所有的输入和预处理所有的输出. (预处理的意思是绑定数据和指定输出模板)
站点不止 index.php 这一个页面, 其它的页面也要用到数据库连接怎么办? 也要用到查询出来的数据怎么办? 复制粘贴? 不, 尝试分离这些公共的东西, 把它们放到另一个文件中。
数据库连接的逻辑代码被分离到 model 层,这部分被叫做业务逻辑。
现在控制器将变得十分简洁,比如下面代码。此时控制器的唯一任务,就是从model层获取数据, 然后调用模板(view层)来渲染数据, 这就是简单的MVC实现。
require_once 'model.php';
$posts = get_all_posts();
require 'templates/list.php';
全文参考 Symfony 系列之为什么要使用MVC,讲解得很清晰,本文只是用个人的理解进行了二次表达。
模型 Model 表示业务数据,比如数据库中的数据,并把业务数据提供给视图。
在 《Symfony 权威指南》中,MVC架构被翻译为 业务规则、服务逻辑和表现页面。
参考: