学习目标

  • MVC设计模式
  • 单一入口机制
  • MVC的实现

MVC设计模式

  • Model(模型)

    是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

  • View(视图)

    是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。

  • Controller(控制器)

    是应用程序中处理用户交互的部分。通常控制器负责处理用户请求,从模型读取数据,并向视图发送数据。

单一入口机制

多入口

通过访问不同的php文件执行相应功能来完成用户请求。例如:

index.php  //网站首页
list.php?page=3 //内容列表页
info.php?id=20 //内容详细页
login.php //用户登录页

  

单一入口

web 程序所有的请求都指向一个脚本文件,使用一个php文件处理HTTP请求。

如图,以index.php为入口文件。避免用户在MVC模型中直接访问控制器导致程序混乱。

单一入口程序架构逻辑示意图如下所示:

单一入口文件示例代码(MVC和index文件位于同一目录下)

Model

class HomeModel
{
public function getData(){
return "从数据库获取到了数据!";
}
}

  

View

class HomeView
{
public function display($data){
echo $data;
} }

  

Controller

class HomeController
{
//显示Home首页函数
public function index(){
//1.实例化模型
$model=new HomeModel();
//2.读取数据库数据
$data=$model->getData();
//3.实例化视图
$view=new HomeView();
//4.显示数据
$view->display($data);
}
}

  

index.php

//自动加载类文件
function __autoload($className){
  include_once $className.".class.php";
}
//单一入口路由选择和事件分发
//控制器命名规范:控制器名称+Controller
//View、Model规则一致
//控制器名称按照类名规范
$controller=isset($_GET['c'])?$_GET['c']:"home";
$action=isset($_GET['a'])?$_GET['a']:"index";
//初始化控制器
$controllerName=ucfirst(strtolower($controller))."Controller";
echo $controllerName;
$c=new $controllerName();

    

MVC的实现

框架执行流程

定义目录结构

配置文件定义

configs.php文件定义数据库配置信息和默认路由信息。

常量定义

base.php文件用于定义系统常量。

核心运行类定义

把入口文件需要处理的请求分发功能定义到核心运行类中。

自动加载类设计

所文件的加载都是相对于入口文件进行加载。

入口文件设计

基础路由设计

按照命名空间命名规范,定义home模块的IndexController控制器及其方法index()。index()方法简单输出测试数据。

对很核心运行类run()方法进行设计。

PHP21 MVC的更多相关文章

  1. Asp.Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

  2. .Net Core MVC 网站开发(Ninesky) 2.4、添加栏目与异步方法

    在2.3中完成依赖注入后,这次主要实现栏目的添加功能.按照前面思路栏目有三种类型,常规栏目即可以添加子栏目也可以选择是否添加内容,内容又可以分文章或其他类型,所以还要添加一个模块功能.这次主要实现栏目 ...

  3. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  4. ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  5. ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入

    原文:Dependency injection into views 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NET Core 支持在视图中使用 依赖 ...

  6. 开源:Taurus.MVC 框架

    为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...

  7. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  8. Taurus.MVC 2.0 开源发布:WebAPI开发教程

    背景: 有用户反映,Tausus.MVC 能写WebAPI么? 能! 教程呢? 嗯,木有! 好吧,刚好2.0出来,就带上WEBAPI教程了! 开源地址: https://github.com/cyq1 ...

  9. 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus

    最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...

随机推荐

  1. python学习笔记7-异常处理

    1 写弄成了读 1 try: fh = open("testfile", "r") fh.write("This is my test file fo ...

  2. E20170509-hm

    slice   vt. 切成片; 切下; 划分;  n. 薄片,切片 slicing  n. 切割; 限幅,限制; inspect    v. 视察; 检查 inspector  n. 检查员; (英 ...

  3. 机器学习--DIY笔记与感悟--②决策树(1)

    在完成了K临近之后,今天我们开始下一个算法--->决策树算法. 一.决策树基础知识 如果突然问你"有一个陌生人叫X,Ta今天需要带伞吗?", 你一定会觉得这个问题就像告诉你& ...

  4. POJ1700 【经典过河问题,贪心】

    题意: n个人过河, 船每次只能坐两个人, 然后船载每个人过河的所需时间不同, 问最快的过河时间. 思路: 仅仅启发一下思维: 我相信很多人一下子的想法就会有,每次最快和那些慢的过去,然后让最快一直来 ...

  5. Unity陀螺仪

    using UnityEngine; using System.Collections; using UnityEngine.UI; //摄像机 陀螺仪转动 public class TGyro : ...

  6. oauth2(spring security)报错method_not_allowed(Request method 'GET' not supported)解决方法

    报错信息 <MethodNotAllowed> <error>method_not_allowed</error> <error_description> ...

  7. c++模板专门化

    #include <iostream> #include<cstring> using namespace std; template <typename T> T ...

  8. AtCoder Grand Contest 003 F - Fraction of Fractal

    题目传送门:https://agc003.contest.atcoder.jp/tasks/agc003_f 题目大意: 给定一个\(H×W\)的黑白网格,保证黑格四连通且至少有一个黑格 定义分形如下 ...

  9. Eclipse Neon Java版本安装Java EE插件

    Help→Install New Software 地址:Neon - http://download.eclipse.org/releases/neon/201703231000 选择  Web,X ...

  10. 使用statement接口实现增,删,改操作