什么是MVC以及PHP如何实现MVC

PHP: 手把手编写自己的 MVC 框架实例教程 1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。   MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自... 阅读详情

什么是MVC?

简单的说就是将网站源码分类、分层。

MVC三个字母的含义:

M:Model 模型,负责数据库操作。

V:View 视图,负责调用Model调取数据,再调用模板,展示出最终效果。

C:Controller 控制器,程序的入口,决定改调用哪个View,并告诉View该做什么。

如此说来,程序的执行顺序是C-V-M 或 C-M ,和MVC的名字正好相反。

为什么要MVC?

1.能使网站程序物理结构更合理。

当用PHP建设一个网站的时候,最笨的方法,你可能把每个页面建成一个PHP文件。如果你的网站只有index.php,menu.php.article.php 三个页面,那你可以不用MVC,但我们做一般的网站的时候,动辄几十个页面,把所有页面放在根目录显然不是我们所能接受的,于是你需要一个合理的思想去将你的代码分类,按功能把他们分成不同的目录,且由程序智能的载入调用,这就是MVC要帮助你做的。

2.使代码更容易维护。

我们再来看单个页面,最笨的方法,就是PHP代码与HTML代码混合,这显然不够好,你在维护网站的时候不得不区分哪里是PHP,哪里是HTML,这对于一个程序员来说,简直只灾难。于是很多人就使用Smarty,这样就可以将“数据处理”与“页面展示”分开来,这样做的确不错,也有很多人正在这么做,但这还不是MVC,MVC要做的就是将“数据处理”再分为“逻辑处理”与“数据库操作”,这就是所说的分层。

这样当你的程序错误或想要修改的时候,就变得很轻松了,当页面显示错误的时候,你就去检查V或模板文件;当逻辑有问题的时候,你就去检查C和V;当你数据库操作错误就去检查M。

其实MVC一般要把PHP的一个页面分割为4个页面,分别是C,V,M,模板。各司其职,方便管理。

3.有利于代码复用。

MVC会把一般会把一个大的功能放在一个目录下,也就是由一个C去管理。

例如要做一个含有会员系统的网站,我们就可以把会员相关的代码都放到user目录里,由User_Controller统一管理,当我们另一个网站也需要会员系统的时候,我们就可以直接把这个目录复制过去,修改一下接口就可以了。

PHP实现MVC的思路

我们需要三个基类:Controller、View、Model ,然后不同的C、V、M分别继承他们就有对应的属性与方法了,如果这里你不理解,可以去看看面向对象的书。

我给大家提供一种MVC基类的设计思路,仅供参考:

1. Controller类的设计

一个main()方法,供程序调用,主要是通过get和post变量决定该如何处理。

一个getModel($model)方法,在需要调用数据库的时候,调用对应目录的M。

一个display($view)方法,在main()方法中调用,载入对应的V,并掉应V的main()方法;

2.View类的设计与Controller很相似

一个main()方法,当C载入V的时候调用这个方法,使程序能继续执行下去。

一个getModel($model)方法,在需要调用数据库的时候,调用对应目录的M。

一个display($template),调用对应的模板文件,并把数据传递给模板。

3.Model类的设计

可以定义一些属性,例如要操作那些表,操作那些字段等。

一个getDB()方法,获得一个数据库类的实例,(数据库类一般都是用单件模式设计的)

一个load()方法,载入一个数据。

一个add()方法,可以根据定义好的属性自动构造SQL语句,并执行插入操作。

一个eidt()方法,同上,但执行修改操作。

一个del()方法,同上,但执行删除操作。

为了能使新手更好的理解我这个思路的工作原理,我们现在模拟一个用户登录的场景,看看MVC是如何工作的。

现在假设,所有的数据都提交给index.php,

第一步:

我们提交各get变量,告诉index.php该用哪个C,例如可以这样index.php?controller=user

然后index接收到get变量,什么也不需要做,直接找到/user/controller.php,把所有数据丢给他,本来GET和POST就是全局的,所以index.php也不需要做什么,直接调用C的main函数就可以了,到此index.php的任务完成。

第二步:

C的main函数开始执行,检查变量,发现用户要执行的登录操作(很简单,你post个变量do=login就可以了),于是调用getModel,载入对应的M类(例如/user/models/model.php),并实例化, 调用实例的load方法,载入该用户的数据资料,判断是否与用户提交的密码一致,如果提交的数据不正确header跳转到出错页面,如果正确,调用display()方法,载入对应的V(例如/user/views/details.php),并实例化,调用其main()函数,进入第三步。到此C的任务已完成,第二不操作均在main函数中进行。

第三步:

你可以选择调用getModel()载入M,重写调取数据,也可以在C实例化V的时候,把参数传过来(例如SESSION),当V已经确定得到数据以后,display(),载入模板,MVC执行完毕。

当然,由于字数与精力限制,这里写的只是非常简要的概括,实际实施的时候要考虑很多细节,但我设计MVC的时候,大概思路就是这样,也用到了实际中,感觉良好。
6、基于深度强化学习的无人机路径规划 本文介绍了一种结合人工势场法的改进DQN深度强化学习算法在无人机路径规划中的应用。通过设计合理的网络结构、状态空间、动作空间和融合引力-斥力机制的奖励函数,实现了无人机在复杂环境中的自主避障与目标导向飞行。采用轻量级神经网络提升实时性,并在Gazebo仿真环境中进行训练与测试,结果表明该算法具有快速收敛、高成功率和良好适应性。实验评估指标包括损失函数、最大Q值和任务成功率,验证了方法的有效性。文章还探讨了其在物流配送、农业植保和环境监测等领域的应用前景,并展望了多无人机协同与复杂环境适应性等未来研究方向。 阅读详情

相关推荐

MATLAB实战:手把手教你实现Gardner环路位同步(附完整代码)

本文通过MATLAB实战,详细讲解了Gardner环路位同步算法的原理与实现。内容涵盖插值滤波器、定时误差检测、环路滤波器与数控振荡器等核心模块,并提供完整代码和调试技巧,帮助读者掌握数字通信中关键的符号定时同步技术。

weixin_29048775的博客 174

PHP实现简易的MVC框架

实现MVC框架没有固定的实现方法,根据框架特色和语言特点以及自己的需求进行实现即可。

光头强的博客 7139

图片边界矢量化-地理配准

无地理和投影信息的JPG图片,通过ArcGIS进行地理配准(Georeferencing)完成数字化边界。

u012727861的博客 1904

PHP之简单实现MVC框架

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

狼魂之力 1017

基于深度学习的道路裂缝检测识别研究(开题报告)

具体而言,将本研究提出的模型与其他先进的道路裂缝检测算法在相同的数据集上进行对比实验,通过对比实验结果,分析不同算法在准确率、召回率、F1值等指标上的优劣,以及在实际应用中的表现。通过对综述论文的学习了解,对计算机视觉、多模态相关领域的基础进行简要介绍,并在跨模态行人重识别研究领域归纳国内外研究现状和发展趋势,明确当前面临的问题和挑战,并针对当前存在的问题展开后续研究。第二,研究解决该问题的途径和方法。基于深度学习的道路裂缝检测识别研究,旨在通过构建和优化深度学习模型,实现对道路裂缝的自动识别和定位。

毕业作品网站 3826

使用autodl服务器运行CasMVSNet以及使用colmap产生的数据

MVSNet学习

qq_44708206的博客 3274

PHP MVC框架初探

前言 下面准备审一下Yii、laravel、tp,但这些框架都是基于MVC模式的,所以先简单了解下MVC模式。 MVC是什么 MVC(Model-View-Controller)是软件工程的一种软件架构模式。 在MVC模式设计下,软件系统被分来三个模块:模型(Model)、视图(VIew)、控制器(Controller)。 Model(模型):是应用程序中用于处理应用程序数据逻辑的部分,通常负责与数据库直接进行 curd 的交互。 View(视图):是应用程序处理数据显示的部分,通过将处理好的数据进

Sentiment的博客 1861

【STM32学习】(29)STM32实现595驱动三个数码管(标准库和HAL库实现)

我选用的单片机型号为:STM32F103系列 74LS595是一个串转并行输出的芯片,它能为单片机节省很多的IO口,应用场景广泛。 现要求三个数码管动态显示,常规设计都是并行实现,需要8个IO数据口,然后还需要3个IO片选数码管接口,这样大大占用了IO口,导致连接的外设变少。因此我们引入74LS595芯片。电路设计如下: 只需要三个共阴极数码管与三个595芯片级联即可完成,通过RCLK,SCK,SER三个IO即可完成对数码管的动态控制并显示。电路焊接的实物图如下: 要求完成功能:实现数.

XiaoCaiDaYong的博客 8263

PHP简单MVC架构

由于需要搭建一个简单的框架来进行API接口开发,所以简单的mvc框架当然是首选.最原始,最简洁的mvc框架.下面来介绍下.         一. 项目目录结构: app  |-controller    存放控制器文件  |-model        存放模型文件  |-view        存放视图文件     core |-lib        存放自定义类库  |-conf

Sara的专栏 3万+

Simpack实战:5分钟搞定轨道车辆车轮不圆的3种定义方法(附详细参数设置)

本文详细介绍了在Simpack中定义轨道车辆车轮不圆的3种高效方法:Radius deviations、Fourier coefficients和Harmonic function,并提供了详细的参数设置指南。通过实战案例和参数优化技巧,帮助工程师快速掌握车轮不圆度的定义与仿真,提升轨道车辆动力学分析的准确性和效率。

weixin_29292535的博客 201

一文读懂 SAP ERP / SAP S/4HANA 里的 Price List:概念、配置、定价流程与可运行 ABAP 示例

SAP ERP/S4HANA中的Price List解析 本文系统阐述了SAP定价体系中Price List的核心概念和实现机制。Price List并非独立的价目表,而是通过条件技术(条件类型、访问序列、条件记录)与Price List Type(PLTYP)共同作用的定价维度。文章详细说明了: Price List本质上是客户主数据中的PLTYP字段,作为定价查找键使用 定价流程中条件访问序列如何利用PLTYP查找特定价格 S4HANA与ECC版本在价格维护入口的差异 实际业务中如何通过不同PLTYP实

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 658

php mvc的实现,php mvc的简单实现

php mvc的实现方法:首先定义系统目录;然后获取控制器;最后在浏览器中输入“path/to/yoursite/index.php?controller=test&action=test”即可测试成功。PHP实现MVC开发得最简单的方法——单点入口今天就开始详细的写写我对MVC的一些理解,以及我在开发过程中实现自己的一个框架的一个流程。其中或许说的不正确,还望指正!网站关于MVC的教材很...

weixin_39644139的博客 183

【定位模块算法】amcl(蒙特卡洛)粒子滤波定位算法(附C++代码)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言(1)amcl定位框架介绍(2)amcl定位框架组成(1)ROS-TF坐标转换树【ROS的工具】(2)robot_pose_ekf扩展卡尔曼位姿估计算法(3)定位amcl自适应蒙特卡洛定位,adaptive monte carlo localizaion**(3)amcl定位节点的订阅与发布(4)amcl定位功能包用法(1)编写amcl节点相关的launch(amcl_omni.l

qq_35635374的博客 4402

php mvc的实现方式_深入浅析用PHP实现MVC

在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中。MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂了;同样对于新浪等门户网站,使用MVC,将有大量的文件被加载,对于速度的影响是无法接受的传统的面相过程式的开发方式在处理中型以上的应用时,就开始显得力不从心。即便我们能够快速的完成需求,但是在需求发生...

weixin_32476639的博客 158

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

php mvc 实现,php mvc的简单实现

php mvc的实现方法:首先定义系统目录;然后获取控制器;最后在浏览器中输入“path/to/yoursite/index.php?controller=test&action=test”即可测试成功。推荐:《PHP视频教程》PHP实现MVC开发得最简单的方法——单点入口今天就开始详细的写写我对MVC的一些理解,以及我在开发过程中实现自己的一个框架的一个流程。其中或许说的不正确,还望指正...

weixin_30187777的博客 242

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

用php实现简单mvc,php实现简单的MVC框架实例

本文实例讲述了php实现简单的MVC框架。。具体如下:在开始之前需要知道的知识1.php基础知识2.单一入口, 不知道的可以看看这里 (//www.jb51.net/article/72621.htm)具备以上两点, 那我们就可以开始啦. 哈哈!先来说一下程序的执行流程首先有个入口文件, 然后初始化一些程序, 之后根据请求调用不同的类和方法首先我们弄一个入口文件 Index.php 来看看代码re...

weixin_42570484的博客 390

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

php简单实现MVC

在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中。MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂了;同样对于新浪等门户网站,使用MVC,将有大量的文件被加载,对于速度的影响是无法接受的。枫竹梦介绍MVC的基本原理及一种简单的实现。如下介绍内容适用PHP开发。 PHP中的MVC MVC[1]在...

weixin_34279061的博客 133

php mvc 中文书,php简单实现MVC,phpmvc

php简单实现MVC,phpmvc在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中。MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂了;同样对于新浪等门户网站,使用MVC,将有大量的文件被加载,对于速度的影响是无法接受的。枫竹梦介绍MVC的基本原理及一种简单的实现。如下介绍内容适用PHP开发。PH...

weixin_29864813的博客 103

PHP-MVC机制的实现

2.1.1应用的技术 MVC在某个特定应用上的实现是与该应用的具体技术密切相关的。在网站开发方面,JAVA是比较成熟和典型的,以一个EJB的项目为例,大部分的系统可能采用HTML技术,和J2EE(Java2,Enterprise Edition)的相关技术,包括:HTML,JSP,JavaBean,EnterpriseJavaBean,Servlet。这些技术分布于model,view,co

kevin_xiewen的专栏 571

php实现MVC

在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中。MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂了;同样对于新浪等门户网站,使用MVC,将有大量的文件被加载,对于速度的影响是无法接受的。枫竹梦介绍MVC的基本原理及一种简单的实现。如下介绍内容适用PHP开发。 PHP中的MVC ...

a693874547的博客 91

什么是MVC以及PHP如何实现MVC .

什么是MVC? 简单的说就是将网站源码分类、分层。 MVC三个字母的含义: M:Model 模型,负责数据库操作。 V:View 视图,负责调用Model调取数据,再调用模板,展示出最终效果。 C:Controller 控制器,程序的入口,决定改调用哪个View,并告诉View该做什么。 如此说来,程序的执行顺序是C-V-M 或 C-M ,和MVC的名字正好相反。 为什么要MVC?

养有道 663

php mvc的实现方式_PHP中MVC框架的实现

一、目录的创建在当前项目中创建core:核心目录App:网站目录{public:页面公共目录controllers:控制器目录views:存放静态页面models:模块目录}index.php:项目前台入口文件二、URL重写之隐藏index.php项目中新建.htaccess文件RewriteEngine onRewriteCond %{REQUEST_FINENAME} !-fRewriteCo...

weixin_29997937的博客 315

php mvc实例下载,php实现简单的MVC框架实例

本文实例讲述了php实现简单的MVC框架。分享给大家供大家参考。具体如下:在开始之前需要知道的知识1.php基础知识2.单一入口, 不知道的可以看看这里具备以上两点, 那我们就可以开始啦. 哈哈!先来说一下程序的执行流程首先有个入口文件, 然后初始化一些程序, 之后根据请求调用不同的类和方法首先我们弄一个入口文件 Index.php 来看看代码require "Init.php";$control...

weixin_39600291的博客 126

用php实现简单mvc,php简单实现MVC

在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中。MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂了;同样对于新浪等门户网站,使用MVC,将有大量的文件被加载,对于速度的影响是无法接受的。枫竹梦介绍MVC的基本原理及一种简单的实现。如下介绍内容适用PHP开发。PHP中的MVCMVC[1]在软件工程...

weixin_32568113的博客 214

浅解用PHP实现MVC

传统的面相过程式的开发方式在处理中型以上的应用时,就开始显得力不从心。即便我们能够快速的完成需求,但是在需求发生变更后或者进行后期维护的时候,我们会深深地陷入我们早期搭建的陷阱中。所以,使用面向对象的方式来实现MVC模式,将为我们梳理程序的架构提供一个清晰的思路。什么是MVC?关于MVC的定义和解释,可以说多种多样。我们可以在Wiki或者[2]中找到更为详尽的解释,这里我并不打算,也没有...

aifeier1982的博客 217
上一篇: 浅解用PHP实现MVC
下一篇: CentOS下php升级至5.4
ahstudy
博客等级 码龄19年 60粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值