mvc的基本介绍:
m:model(模型) 用来处理数据的
v:view(视图) 用来展示用户界面的,显示内容的
c:controller(控制器) 是模型和视图的桥梁,也可以说是模型和视图的交通警察,即命令模型处理数据,命令视图显示数据,使得用户界面提交的数据与数据库原来的数据能双向沟通(增删改查)。
mvc主要是围绕着模型,视图,控制器为核心来搭建框架的,我们常用的访问路径的例子:localhost:8000/myBlog/index.php?m=Home&c=category&a=index
分析:
接下来我们来分析这个url:localhost:8000/myBlog/index.php?m=Home&c=category&a=index
localhost:8000这是本机加端口号
myBlog:项目名称
index.php:入口文件,所有的东西都是加载在这个文件里面,执行的也只有这一个文件,其它文件都是根据你的路径自动加载进行来的
m:表示的是你进入的哪个模块(module),进入的是后台模块还是前台模块
c:这个表示的是控制器的名称(controller),当你c=category的时候,表示你访问的是CategoryController这个类
a:表示你调用的控制器下的a方法(Action),例如该例子:我调用的就是CategoryController控制器下的indexAction方法。
总结:mvc框架其实只执行了index.php这样一个文件,后面数值的就是参数,其作用就是告诉框架我要干什么,我要访问哪个模块的哪个控制器的哪个方法,模块接受之后,就会自动调用将要执行的文件。
说明:mvc框架的构建是基于面向对象的,所以我们框架中最小的单位也就是类,此次搭建框架也是基于面向对象进行编程的。
MVC的目录说明:
application:应用目录
Admin/Home:模块,后台还是前台
Controller:写的控制器的类文件,用来命令模型处理数据,命令视图显示数据
Model:写的模型类,用于处理数据的
View:视图文件,即静态页面的文件
framework:框架目录
core:框架的核心文件都在这里面写
dao:封装了连接数据库的类,这里我们用的是pdo
tools:自己写的一些工具类,如验证码类,翻页类等
vendor:放置第三方类,例如smarty模板类,不是我们自己写的
index.php:入口文件,执行项目的时候,就执行这个文件
config:文件配置目录,如数据库的配置,smarty模板的一些配置
1.获取mvc的三个参数,并实例化对象,调用方法:
我们再次来看一下这个url:localhost:8000/myBlog/index.php?m=Home&c=category&a=index,index.php,在框架目录(framework)下的core目录下,建立一个framework.class.php文件,(名字也可以是其它的,后面统一即可,但是习惯上我们定义为framework.class.php)。
2.实现自动加载类文件
我们采用spl_autoload_register()方法实现类文件的自动加载,(如果对spl_autoload_regoster()方法不熟悉,可以去看我的‘类的重要知识(三)’)仍然是在framework.class.php这个文件里面写。值得一提的是,我们这里需要加载三种种类文件,第一种是第三方类文件,如smarty,没有规律可循,所以单独加载,第二种是自己封装的pdo文件,里面有接口文件,以.interface.php后缀名结尾的,也需要单独加载,最后一种是.class.php为后缀名结尾的文件,可大批量加载。
实现类的自动加载,需要命名空间namespace帮助,才能实现。
3.建立一个工厂类,实例化对象
当我们获取mvc的三个参数之后,也能够自动加载类文件了,就需要去实现里里面的内容,然而,我们在调用类的时候,需要去实例化对象,为了避免繁琐,我们建立一个工厂类,专门用来实例化对象
我们只需要Factory::M(‘Cateogry’)就能实例化CategoryModel.class.php这个类的对象,从而可以调用模型里面的方法。
4.基础模型,连接数据库
在这之前,我们封装了一个pdo连接数据库的类(有需要的可以找我要)
我们需要的是这个方法,用来获取pdo对象,就可以操作数据库的数据。
在Model.class.php的文件中,我们在构造函数中,写入这个
通过获取$this->dao来获取对象,这个基础模型都会被其它模型继承。
5.基础控制器,获得smarty对象
通过在构造函数中,实例化smarty对象,使用smarty模板,文件名为:controller.class.php
6.文件配置
众所周知,我们做后端的需要连接数据库,那么,在这个过程中,我们需要配置一些信息才能连接上,而且我们还可能需要配置其它的,所以我们需要做一个文件配置
文件配置可以在以下三个地方
三个地方的优先级依次是:框架的配置<公共配置<前后端的配置,根据array_merge()方法实现优先级
,在framework.class.php文件中写这三个方法:
7.定义路径常量
框架中,常用的一些路径,我们可以用define就定义好,在framework.class.php写
8.实践
目的:在一个控制器中调用模型的方法,从数据库中取出所有的数据
8.1文件实现目录
8.2文件配置,连接数据库,配置smarty模板,设置默认的模块,控制器,方法
8.3模型查找数据库的数据,find()方法是我以及在Model.class.php中以及封装好了
8.4控制器调用模型方法,传递数据到视图上
8.5视图数据的渲染
8.6效果
至此,我们就完成了mvc的框架封装以及实现。
说明:我的mvc框架封装只是说了思路,有些细节没有详细叙述,如果有需要可以找我要。而且这还是比较基础的封装,可以对其进行一些优化,如路径的优化,获取数据的优化,安全方面的优化等等