自定义一个简单的MVC框架

2 篇文章 0 订阅
1 篇文章 0 订阅

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框架封装只是说了思路,有些细节没有详细叙述,如果有需要可以找我要。而且这还是比较基础的封装,可以对其进行一些优化,如路径的优化,获取数据的优化,安全方面的优化等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值