PHP(三)框架设计思想--MVC基础框架的底层逐步实现

本文深入探讨了PHP的MVC设计思想,从混编方式到MVC架构的演变,详细阐述了模型、视图和控制器的角色。介绍了如何逐步实现一个基础的MVC框架,包括模型类、控制器类、入口文件的优化,以及目录布局和配置文件的管理。此外,还涉及了数据库扩展、Smarty模板引擎的引入和后台开发中的应用与优化,如后台登录、数据安全和无限级分类等实战技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、MVC概述
1 混编方式
最早的php页面开发是将php代码和html代码放到一个脚本文件中,这种方式称为混编方式。
但是难以管理维护,已经淘汰了。

2 显示和逻辑分离
后来,将展示的html文件与业务处理的php文件分开。浏览器请求php逻辑文件,html对用户隐藏,在php文件中加载html文件。

 ~~模板文件:
html中可变的动态数据由php填充,但是php代码只负责输出数据,不负责处理数据。这样的文件叫做模板文件。使用的最多的就是echo,foreach、while。

~~模板文件隐藏:
用户不应该请求负责展示的模板文件,需要我们对模板文件隐藏起来。
可在apache、nginx中配置。.htaccess文件。

3 MVC思想架构
对于一个业务复杂的大型网站,显示和逻辑分离也不能更好的维护代码。于是在这基础上,再把逻辑中的所有的数据处理模块单独的提取出来,在需要功能上进行功能调度。这种思想就是MVC思想。
Model模型=》数据处理; Controller控制器=》功能调度;Vie视图 =》显示

M:Model,模型,项目中的数据处理单元,专门负责和数据库进行交互(增删改查)
V:View,视图,项目中用于结果展示的单元(以前的模板文件)
C:Controller,控制器,项目中负责某个功能整体流程调用的单元

浏览器只需要和C控制器进行交互,而模型M和视图V都被控制器所调用,并且模型M和V之间不存在任何的交互。浏览器只需请求stu_c文件即可。

 ~~优缺点:
代码结构分工明确,可读性强;代码结构分工明确,可读性强;代码结构分工明确,可读性强。
但是降低了代码运行的效率。

~~MVC与面向对象
mvc是架构思想,指项目中代码的组织关系,面向过程和面向对象都可以使用MVC的架构思想。但是mvc和面向对象才是黄金搭档。所以项目中的功能都要封装到类中。

二、MVC与面向对象
1.从模型类到控制器
A 模型类
把MVC中的数据处理单元的功能,封装到一个类中。一般项目开发中,一张数据表就对应着的一个模型类。模型类中定义的方法都是表的增删改查,如获取列表,删除,添加等功能。

~~举个例子

模型类中封装了学生表的列表信息和删除功能。在控制器内实例化对象调用即可。

B 引入基础模型类
封装的模型类中每个方法,都要传入参数,实例化数据库对象,同一个类的不同方法有大量重复的代码,而且其他类的方法也有可能出现该重复的代码。

为此我们引入基础模型类,在里面定义一些公共代码,被其他模型类继承。如在基础模型类中增加初始化数据库操作对象的功能。

~~模型类的单例模式
在一个控制器中(此时还未抽象化控制器类),对一个表需要进行多次操作,应该使用该表的一个模型就可以完成全部的任务。实例化模型类只需实例化一个即可。对每个模型类的实例化,我们用一个单例工厂类来完成类的实例化。模型类的单例定义静态数组存储。

2.从控制器类到入口文件
A 控制器类

实际开发中,将一系列相关或相似的功能,使用一个控制器来处理,而该控制器内的每一个方法,就对应着某一个具体的功能。
比如:增加学生,删除学生,修改学生的成绩等,可以用一个学生控制器类来完成。
控制器按功能划分,模型类按数据表划分

~~举个例子

B 增加入口文件index.php
对控制器抽象为类后,请求需要实例化类并调用其中的action方法。在删除原来非控制器类的控制器文件后,增加一个入口文件,每一次的请求都通过入口文件实例化控制器类调用其中的方法。

 index.php从mvc的角度就叫作前端控制器,也叫作入口文件

C 动作分发a
一个控制器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值