10月进步一点点1.单个文件的MVC实现-代码分离
Posted 南瓜__pumpkin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10月进步一点点1.单个文件的MVC实现-代码分离相关的知识,希望对你有一定的参考价值。
原生php程序
实现SQL-Labs第一关的功能,后台PHP需要成的工作大概如下:
- 接收请求数据
- 连接数据库并查询数据
- 接收查询结果
- 前端展示查询结果
index.php 源码文件不仅包含两种编程语言,还包含多种功能。对于规模稍大的项目,这样的写法会给开发者带来很多问题,比如:
- 没有错误检测:比如上面的连接数据库代码, 如果连不上了怎么办?
- 糟糕的代码组织,:网站规模扩大的时候,单个文件变的没有办法维护, 你在哪里写代码来接收表单数据? 你怎么验证数据? 你在哪里发送邮件?
- 代码重用性为零:当所有的东西都在一个文件里面时, 博客的其它部分没有办法使用当前的代码
分离html
前端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 模型
模型 Model 表示业务数据,比如数据库中的数据,并把业务数据提供给视图。
在 《Symfony 权威指南》中,MVC架构被翻译为 业务规则、服务逻辑和表现页面。
参考:
以上是关于10月进步一点点1.单个文件的MVC实现-代码分离的主要内容,如果未能解决你的问题,请参考以下文章