MVC第一课

MVC设计模式

MVC概念

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC三大组件

模型

Model:模型

应用程序中用于处理应用程序数据逻辑的部分。

凡是跟数据操作有关的内容都属于数据逻辑:只要与SQL指令有关,那么都属于模型(数据逻辑)

在MVC中:所有的SQL指令都应该存在于模型组件中。

视图

View:视图

应用程序中处理数据显示的部分。

视图:template(模板),用来承载数据的容器,通常是HTML文件(显示[HTML],美化[CSS]和效果[JavaScript])

控制器

Controller:控制器

应用程序中处理用户交互的部分。

控制器:也叫作模块(Module),是用来与用户直接接触的脚本代码(浏览器直接提交给PHP的脚本对象),判断用户操作的逻辑性。

控制器:在需要的时候,可以调用模型来进行数据处理(数据库操作)

控制器:在需要的时候,可以调用视图来进行数据显示(加工美化)

MVC模式意义

MVC的本质是将代码进行分离:显示数据部分(View),处理业务部分(Controller)和数据操作部分(Model)

1、 符合人类分工协作的模式(思维模式)

2、 利于代码的维护:前端(HTML)与后端(PHP)的分离

代码发展史

1、 PHP与HTML嵌入到一起:混合开发阶段

优点:效率高

缺点:代码重用性低(不利于维护)

2、 PHP与HTML分离开来(两个脚本):模板技术

优点:前后端开发人员分离,利于代码的维护

缺点:效率相对于混编较低,PHP后端代码复用性比较低

3、 PHP中业务部分与数据操作部分再次分离:MVC思想

优点:代码分离完整,利用代码重复利用

缺点:服务器要操作多个文件完成一个请求(效率最低)

效率低:指的是相对于混编模式,从计算机的高效运作来说,再对比网络延迟,效率的降低对于用户而言是感受不到。

MVC工作原理

PHP脚本工作原理

浏览器—》发起请求—》服务器PHP接收请求—》PHP处理(业务逻辑判断,数据库操作,显示数据)--》返回给浏览器

MVC工作原理

在MVC设计思想中:至少有三个文件才能服务一次请求(控制器,模型,视图)

1、用户通过浏览器发起请求

2、PHP接收请求:对应的脚本必须是控制器脚本

2.1 控制器判断用户是否操作恰当

2.2 控制器调用模型获取数据

2.3 控制器调用视图显示数据(输出)

3、PHP返回请求响应结果:控制器

MVC模式的工作流程

将MVC思想设计的项目,按照完整的请求走一遍

1、 用户浏览器输入URL:PHP脚本(控制器)

2、 服务器控制器脚本接收请求

2.1 业务逻辑判断

2.2 调用对应的模型:一个模型负责一张表对应的所有SQL操作

2.2.1 模型需要公共代码

面向过程:封装公共函数

面向对象:用类来封装公共代码(连接认证):模型继承公共模型

2.2.2 模型封装每一种数据逻辑:一个逻辑一个方法

2.3 控制器拿到数据(校验)

2.4 控制器加载模板(视图)来显示数据:显示的过程就是输出

3、 返回结果给用户

项目单一入口实现

项目单一入口:一个项目只有一个入口(用户唯一可以通过浏览器进行访问的文件)

1、 一个项目只要定义一个入口文件:index.php/admin.php/home.php

所有的用户都只能允许访问index.php

2、 “入口文件”来决定去访问对应的哪个控制器

进行很多的判断(系统初始化):单独成立一个文件

入口文件:加载并运行初始化文件

3、 初始化文件中来决定访问哪个对应的控制器

3.1 字符集设定

3.2 常量设定(目录)

3.3 系统设定

3.4 自动加载设定

3.5 初始化URL(从“URL”中获取数据):控制器和控制器类中的具体方法

3.6 加载配置文件

3.7 分发控制器

4、 控制器处理MVC工作流程

4.1 业务逻辑判断

4.2 调用模型操作数据库

4.3 调用视图显示数据

5、 结果最终是一层层返回

Index.php->初始化文件->控制器->模型和视图

模型和视图->控制器->初始化文件->index.php->返回浏览器

创建目录结构

规划框架目录

网站根目录下:应该有哪些对应的文件夹和文件

1、 入口文件:index.php

2、 应用程序目录:App文件夹,存放与当前应用有关的内容(MVC对应的文件)

3、 核心目录:Core文件夹,存放一些核心文件的(初始化,公共核心文件)

4、 Web资源目录:Public文件夹,存放的就是当前应用所需要的一些资源(样式、JS和图片等)

5、 插件目录:Vendor文件夹,存放的是一些外部提供好的完整功能的脚本(Smarty,验证码,图片上传等)

6、 配置目录:Config文件夹,存放配置文件(有可能内部再分层)

7、 文件上传目录:Upload文件夹,存放用户上传的文件

规划应用程序目录

应用程序目录:MVC对应的文件的存储

通常:一个网站分为前台和后台

1、 建立两个对应的文件夹,分离前后台业务:Home/Back,Home/Admin

2、 对应的前后台之下,都会有对应的MVC,在对应的文件夹下,再次创建分层文件夹Controller/Model/View

注意:很多时候,前后台业务不一样,但是数据操作基本差不多,基于这种情况,会将Model文件夹提升,在App目录下,与对应的前后台文件夹同级

规划Web资源目录

Web资源目录:管理对应的样式,图片和js效果,在Public目录下,创建三个对应的文件夹即可。

入口文件

入口文件:index.php,本质要做的事情非常简单

1、 实现入口设定:安全限定(只有访问index.php入口文件才有可能访问其他文件夹中的资源)

原理:在入口处定义一个常量,然后在其他文件中判断常量是否存在:存在即可访问,不存在不允许访问。

2、 引入系统初始化文件

3、 让系统初始化文件执行

搭建运行环境

1、 搭建一个虚拟主机

2、 重启apache

3、 修改本机Hosts文件

应用程序初始化类文件

要求

1、 文件需要使用命名空间(所有类文件)

2、 文件需要权限判定(所有类文件)

3、 一个功能应该是一个单独的方法

1、 run方法:运行方法

2、 初始化字符集:initCharset

3、 初始化目录常量:initDirConst

4、 初始化系统设置:initSystem

控制对应的错误显示级别,以及是否显示

Ini_set(选项,值)

5、 初始化配置文件:initConfig

6、 初始化URL:initURL

7、 初始化自动加载:initAutoload

7.1 加载方式自定义:Core/Controller/Model/Vendor

7.2 利用spl_autoload_resiter来进行自动加载

7.3 所有的类都是由命名空间控制的:系统寻找类的时候会带着空间寻找(不是一个纯粹的类名):在加载的时候,一定要去除空间

8、 分发控制器

控制器组件

功能:业务逻辑处理,调用模型获取数据,调用视图显示数据

控制器调用模型

控制器调用视图显示数据

模型组件

模型:连接数据库,进行SQL操作,数据解析

创建模型:一张表(数据)对应一个模型

模型要做的事情:连接认证(?),组织SQL指令,执行SQL指令,解析SQL执行结果

视图组件

视图:本质就是显示数据(已有数据)

增加视图文件

在视图中解析数据

时间: 2024-10-14 00:28:35

MVC第一课的相关文章

spring MVC 第一课 概念

1.起源.背景 Spring是一个开源框架,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架. Spring致力于提供一种方法管理你的业务对象.Spring是全面的和模块化的.Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的.因例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象. 它的设计从底部帮助你编写易于测试的代码.Spring是用于测试驱动工程的理想的framework.

2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C

2011年冬季斯坦福大学公开课 iOS应用开发教程是个很经典的教程,这个老头讲的很给力.做笔记总结. 第一课名称: MVC and Introduction to Objective-C 这课的主要内容有: iOS的概述  -什么是iOS MVC - 面向对象的概念 Objective-C-介绍下语言的概念 iOS包括四层 内核 内核是mach 4.x BSD UNIX内核 mac OS  10操作系统,是个多任务的UNIX内核,在这层上提供了网络,socket ,安全机制,文件系统,大部分这些

ThinkPHP第一课 环境搭建

第一课 环境搭建 1.说明: ThinkPHP是一个开源的国产PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.最早诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布.早期的思想架构来源于Struts,后来经过不断改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(标签库).RoR的ORM映射和ActiveRecord模式

sql第一课笔记

这是我看了imooc的视频教程之后重新写的笔记. 虽然之前也是学习过SQL Server数据库,但是也是忘记得差不多了.现在重新捡起来,安装一次数据库练习,使用的是mysql. 第一课是最简单的创建,修改,查看,删除数据库: mysql 有密码之后在命令行登陆 用的是 shell>mysql -u root -p; 提示输入密码: 登陆成功之后,把提示符mysql变成以当前计算机帐户名@主机名 当前数据库的格式:prompt \[email protected]\h \d> prompt命令下

OpenCV 第一课(安装与配置)

OpenCV 第一课(安装与配置) win10,opencv-2.4.13, 安装, vs2013, 配置 下载安装软件 官网OpenCV下载地址下载最新版本,我下载的是opencv.2.4.13,然后解压安装,我写的路径是D:\Program Files.注意本文中绿色标注的要换成你自己的安装路径. 这里得说一点,可能是因为网速太差的原因,昨天晚上下载了几次安装时都提示说"cannott open file'opencv-2.4.13.exe' as archive".我当时一直不明

读书笔记 - 《格鲁夫给经理人的第一课》

这本书对我的启发远远超过其它的企业管理类图书,不愧是资深前辈写的书.虽然名为第一课,实际上对于中层经理人来说,已经不再需要第二课了.这本书从简单的早餐店开始,讲解了管理杠杆率.开会.决策.规划.矩阵组织.激励.绩效.招人.薪酬.培训,以浅显的语言讲解了几乎是一个中层经理人所需理解的全部工作,使我对工作的认识有了大幅度提高,已经基本可以摆脱漫无头绪的状态!这本书准备丢在公司,没事就翻看思考一下,在实践中继续深入领悟!

VC++编程之第一课笔记

第一课 Windows程序内部运行原理 API 操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用.这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API. 如Create Window就是一个API函数,应用程序调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口. MSG(消息结构体) 结构体定义如下: typedef s

EasyUI入门第一课

首先下载easyUI,最好是最新的,然后新建一个空web程序或是网站,不废话,代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="JqueryEasyUI.WebForm1" %> <!DOCTYPE html> <html xmlns="http://ww

第一课 C语言简明教程

1序言: 1与Java.C#等高级语言相比,C语言却非常简单,学习简单,使用也简单,但是也非常重要,到目前为止基本上操作系统的内核代码超过百分之九十使用C语言完成,因此学好C语言是学好计算机这门课程的基础,特别是进入系统编程尤为明显. 今天是本人复习C语言课程的第一课,主要重新记录一下C语言的基础知识,这节课涉及到C语言的结构.变量以及类型.输入输出.条件判断以及循环知识. 2知识点: 2.1 C语言的结构 2.1.1 通常情况下C语言程序是由: 1.相关的代码注释,使用/* ··· */可注释