自己简单的总结下 之后就开始代码审计 好好学习多种MVC的框架的写法

视图View

代表用户交互的页面、可以包含HTML界面、Smarty模板等和界面相关的元素。MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的点击、拖动等事件的处理,而不包括在视图上的业务流程处理。业务流程会交给模型层(Model)处理。

模型Model

模型层是对业务流程、状态的处理以及业务规则的指定。业务流程的处理过程对其他层来说是黑箱操作,模型接受视图的请求处理数据,返回最终的处理结果。业务模型还有一个很重要的模型–数据模型,数据模型主要指实体对象的数据保存(持久化)。比如将一张订单保存到数据库,从数据库获取订单,所有和数据库相关的操作限定在该模型中。

控制器Controller

控制层是View层和Model层之间的一个桥梁,接收到用户的请求,将模型和视图匹配在一起,共同完成用户的请求。比如,用户点击一个链接,控制层接收到请求后,把信息传递给模型层,模型层处理完成之后返回视图给用户。

首先我认为这个MVC框架是一个高效率 高整合性的框架 有便于处理与维护 之后需要添加的方法 只需要在相应的类中添加就行

首先 基础模型类 是为了模型类最基础 把最基础,重复的一些东西放在基础模型类中 类似于一些数据库的配置文件、连接 放进去

模型类(按数据表划分) 专门对于一个对象的数据处理 其中要加载基础模型类(与数据库进行连接) 我的理解就是专门用来提供方法

基础控制器类 跟基础模型类的功能差不多 都是提供底层类似的操作 方便有效率的处理

控制器类(按功能划分)通过单例的工厂模式 然后生成的对象 用于调用模型类中的功能 我的理解就是调控动作

单例工厂类 的作用就是来储存类的对象 现在我的理解就是来返回一个对象 防止用户来调用生成对象 (安全处理)

一个MVC框架里面 会有一个入口文件 也称作前端控制器、请求分发器 因为调用的时候其实都是最先通过index.php文件里头

用过URL的变化 index.php 会有类似的接受参数 代表着平台、对象、方法的调用 这些被分作为分发参数


为了更方便的包含文件 处理文件 让整个框架变的更有效率 所以采取了自动加载类文件(直接自动加载框架中的类文件)
当URL接受到相应的分发参数的时候 通过自动加载类文件 会自动去包含相应的类文件

可以在入口文件定义好各目录的常量 这样方便处理

目录结构

application – 应用代码

应用代码比较重要 大致分为 后台目录、配置目录、前台目录
后台目录、配置目录、前台目录还可以继续细分

例如
后台目录----> 控制器类目录 模型类目录 视图目录
前台目录----> 控制器类目录 模型类目录 视图目录
配置文件目录----> 存放一些需要调用的数据库配置信息之类的

config – 程序配置或数据库配置

frame - 框架核心目录 框架的核心类 类似于 上传类 基础模型类 基础控制器类 工厂类 分页类等等的核心文件

public – 静态文件 存放一些公共的JS、CSS文件

Vendor - 存放插件 类似需要的smarty引擎模板 之类的

index.php?p=平台&c=控制器&a=动作
一个完整的MVC请求 在指定的平台中的控制器里面的动作由分发参数所传出来的 由控制器所接受其中的参数 然后经过自动加载类 判断其所需要的类文件

public static function autoload($class_name) {// 先把已经确定的核心类放到一个数组里面$frame_class_list = array(// '类名'  =>  '类文件地址''Controller'=> FRAME_DIR . 'Controller.class.php','Model'        => FRAME_DIR . 'Model.class.php','Factory'  => FRAME_DIR . 'Factory.class.php','MySQLDB'    => DAO_DIR . 'MySQLDB.class.php','PDODB'        => DAO_DIR . 'PDODB.class.php','I_DAO'      => DAO_DIR . 'I_DAO.interface.php','Smarty' => SMARTY_DIR . 'Smarty.class.php','Captcha'    => VENDOR_DIR . 'Captcha.class.php','Upload'    => FRAME_DIR . 'Upload.class.php','Page'        => FRAME_DIR . 'Page.class.php','Image'     => FRAME_DIR . 'Image.class.php',);// 判断是否为核心类if(isset($frame_class_list[$class_name])) {// 说明是核心类include $frame_class_list[$class_name];}// 判断是否为控制器类,截取后10个字符进行匹配elseif(substr($class_name, -10) == 'Controller') {// 说明是控制器类,应该在当前平台的Controller目录下进行加载include CURRENT_CON_DIR . $class_name . '.class.php';}// 判断是否为模型类,截取后5个字符进行匹配elseif(substr($class_name, -5) == 'Model') {// 说明是模型类,应该在当前平台的Model目录下进行加载include CURRENT_MODEL_DIR . $class_name . '.class.php';}
}private static function initAutoload() {spl_autoload_register(array(__CLASS__, 'autoload'));
}

然后请求分发 new一个所需要的控制器的类文件 $controller = new $controller_name; 然后由控制器调用其中的动作$controller->$action_name()

private static function initDispatch() {// 先确定控制器类的名字$controller_name = CONTROLLER . 'Controller';// 实例化控制器类$controller = new $controller_name; // 可变类// 先拼凑出当前动作的名字$action_name = ACTION . 'Action';// 调用方法$controller->$action_name();// 可变方法}
}

然后在模型类中 (这里就举例一个模型类的文件)

 public function insertArt($art) {// 通过数组得到多个变量extract($art);// 完善其他数据表数据$addtime = time();// 入库$sql = "insert into bg_article values (null, $cate_id, '$title', '$thumb', '$art_desc', '$content', '$author', default, default, $addtime, default, default)";return $this->dao->my_query($sql);}

这个方法就在模型类中实现(对相关的数据库的操作) 然后通过Smarty分配变量 在继续到视图文件 xxx.html

一个完整的MVC请求就是这样(emm 就是个人的理解 自己只是记录下 如果说错了 麻烦指点下)

多个页面可能由相同的功能 所以在一个页面中 我们不止是需要一个模型类的实例化 可能还需要多个模型类的实例化

MVC框架的学习总结相关推荐

  1. php mvc 路由,PHP MVC框架路由学习笔记

    文章主要介绍了PHP MVC框架路由学习笔记的相关资料,需要的朋友可以参考下. 提到PHP开发web,自然离不开开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等... 第一篇先来 ...

  2. MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)(转)

    阅读目录 一.MVC原理解析 1.MVC原理 二.HttpHandler 1.HttpHandler.IHttpHandler.MvcHandler的说明 2.IHttpHandler解析 3.Mvc ...

  3. MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...

  4. php怎么自己写框架,PHP学习笔记,自己动手写个MVC的框架

    最新在大家自己的博客的过程中,发现各种开源的博客系统都或多或少的用起来别扭.于是想动手自己写个博客系统.既然写,就想好好写.那就先写个MVC框架.一点一点来.写的过程中有很多想法.还希望大家能够多多指 ...

  5. spring框架mvc框架_5篇Spring框架书籍,通过MVC学习Spring

    spring框架mvc框架 Spring Framework is one of the most widely used Java EE Frameworks. It's an open sourc ...

  6. 【Java学习路线之JavaWeb】Spring MVC框架入门教程

    文章目录 读者 阅读条件 MVC设计模式简介 JSP+JavaBean Servlet+JSP+JavaBean MVC优缺点 优点 缺点 Spring MVC是什么 Spring MVC优点 第一个 ...

  7. 【QT学习】实现MVC框架的简易封装(一文读懂)

    文章目录 前言 一.MVC框架简介 1.核心部件 2.使用目的 3.MVC优点 二.具体封装步骤 1.文件管理 2.创建模型 3.创建控制器 4.MVC实现(用户登录验证为例) 总结 前言    MV ...

  8. Java Web学习总结(30)——Service层在MVC框架中的意义和职责

    mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计, ...

  9. 学习如何写PHP MVC框架(1) -- 路由

    说到PHP开发web,自然离不开开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等... 第一篇先来简单点的,说说MVC框架的路由功能... 一般的单入口框架路由都是这样的结构: ...

最新文章

  1. python字符串中某个字符修改_Python中修改字符串的四种方法
  2. qt之键盘的设计及QlineEdit内容读取
  3. 中间件中渲染Razor视图
  4. 辅助类BinaryTreeNodeLeftChildRightSibling(左孩子右兄弟,二叉树结点)
  5. S3C6410启动模式介绍
  6. Office EXCEL 中如何让一个单元格的数据链接到另一个工作表的数据
  7. 白鹭引擎android打包,白鹭引擎能把动画打包成小程序吗
  8. 服气!蹭热点无敌,麦当劳发布“5G”新品:真香
  9. Git SSL公钥密钥生成
  10. 获取股票历史数据(2)——数据保存/数据可视化
  11. Android网络:开发浏览器(五)——功能完善之保存图片实现
  12. 电话号码的字母组合(Java)
  13. swt包下载,swt包引入(一个简单的SWT程序实例及详解)
  14. (61)Verilog生成vcd波形文件
  15. 怎样还原台式计算机,台式机如何一键还原呢
  16. 信号与系统_系统频率响应
  17. SRTM DEM hgt格式转成GRID格式的问题解决
  18. 都严肃点!史上最早的“喜当爹”其实是一项国家计划
  19. JS实现上传图片的三种方法并实现预览图片功能
  20. 获取jqGrid中的所有数据导出并生成Excel文件流供用户下载(post请求实现文件下载)...

热门文章

  1. 10个建模师,9个吃不饱,游戏建模师职业现状
  2. 鼓励参与计算机考试宣传标语,期末考试励志宣传标语
  3. 道翰天琼认知智能奠基者领导者 中国原生认知智能科技 认知智能整体核心科技解密
  4. 在SpringMVC项目中使用HIkariCP
  5. 后台管理系统登录思路
  6. git删除远端分支命令
  7. NUL与NULL的区别
  8. MySQL5.7服务无法启动或Table ‘mysql.plugin‘ doesn‘t exist
  9. Field ‘recordID‘ doesn‘t have a default value
  10. 嵌入式Linux--U-Boot(三)Boot命令使用