学习目标
- 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()方法进行设计。