基本原理:显示与逻辑相分离
目的:为了更好的管理大量的代码:更新,重用 变得容易。
主要分为
M:Model,模板,数据处理(逻辑处理)
C:Controller,控制器,负责流程中调度各个单元
V:view,视图,用于显示各个单元
注意:
模型,在项目中,通常指的是模型类的对象,而不是模型类本身
如果在一个功能(控制器)中,如果使用某个表的多次操作,应该使用该表的一个模型就可以完成全部任务。
MVC中的命名规范
M类文件命名:类名+Model.class.php
M类的命名规范:类名+Model
C类文件命名:类名+Controller.class.php
C类的命名规范:类名+Controller
控制器的分类
控制器是按照功能划分的
模型类的分类
模型类是按照表来划分的
MVC的动作分发
在请求前端控制器index.php时,向其传递a参数,表示当前所需要执行的动作名
功能:比赛列表:
Index.php?a=list
判断a参数,执行相应的动作即可
$default_action = "list";
$a=isset($_GET["a"] ? $_GET["a"] : $default_action);
$action_name=$a.Action
//可变方法
$controller->$action_name
一般用常量来储存分发参数
保证在一次请求周期内,当前控制器与当前动作不会发生改变
MVC中的文件管理规范
Index.php入口文件
Application/应用程序目录
Front/前台
Back/后台
Test/测试平台
Model/模型
View/视图
Controller/控制器
Framework/框架代码目录
MySQLDB.class.php数据库操作类DAO类
Factory.class.php工厂类
Model.class.php基础模型类
Controller.class.php基础控制器类
Tip:函数getCWD()可以用来获得当前工作目录。Current Working Directory
分发参数共3个:
P:平台(目录)
C:控制器(类)
A:动作(方法)
自动加载的使用
//在创建对象时自动加载
spl_autoload_register(array(__CLASS__, 'userAutoload'));