首页 > 后端开发 > 正文

使用php开发一个mvc框架 什么是MVC以及PHP怎样实现MVC

2023-10-06 19:41:24 | 我爱编程网

今天我爱编程网小编整理了使用php开发一个mvc框架 什么是MVC以及PHP怎样实现MVC相关信息,希望在这方面能够更好的大家。

使用php开发一个mvc框架 什么是MVC以及PHP怎样实现MVC

php中为什么实现mvc

php mvc实现的原因:
在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中。MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂了;同样对于新浪等门户网站,使用MVC,将有大量的文件被加载,对于速度的影响是无法接受的。枫竹梦介绍MVC的基本原理及一种简单的实现。如下介绍内容适用PHP开发。
PHP中的MVC
MVC[1]在软件工程中是一种软件的架构。从php的角度来讲MVC有一些不同。
Model(模型),程序应用功能的实现,程序的逻辑的实现。在PHP中负责数据管理,数据生成。
View(视图),图形界面逻辑。在PHP中负责输出,处理如何调用模板、需要的资源文件。
Controller(控制器),负责转发请求,对请求处理。在PHP中根据请求决定调用的视图及使用的数据。
为什么使用MVC
MVC的主要作用是为了将代码分层、分类。
MVC的主要目的是为了解决Web开发中分离开发与设计工作,使其工作相对独立。
在这样的过程中还发现了其他的一些优点,网站的目录结构更加清晰,网站更易维护与扩展,可以实现模块的复用。
MVC实现
请求URL
首先,约定请求页面时的URL,以如下结构进行实现:
代码如下:

localhost/index.php?c=demo&a=index?m=welcome如果想得到更加优美的URL结构,可以进行优化,为由这URL结构优化与本文关系不大,以后进行分享。
从上面的参数可以看出,访问的文件是index.php,同时含有3个参数分别为c、a、param。
MVC目录结构
接着,规划MVC的目录结构如下:
代码如下:
/*
├─www # 网站根目录
│ ├─controller # 控制器目录
│ │ ├─democontroller.php # demo控制器
│ ├─model # 模型目录
│ │ ├─model.php # model模型
│ ├─view # 视图目录
│ │ ├─index.php # index视图
│ ├─index.php # 入口文件
*/相关免费学习推荐:php编程(视频)

使用php开发一个mvc框架 什么是MVC以及PHP怎样实现MVC

什么是MVC以及PHP怎样实现MVC

其实你的问题一开始就问错了,即然你问了,我就随便说说好了。
MVC 是一种设计风格,并不是一种具体手法。每个人写代码都有自己习惯的一种设计风格。MVC 是应用程序开发常用的一种风格,实际上并不适合 PHP,因为 PHP 的工作环境注定了它很难做出像样的控制器,也就是 Controll 。
MVC 本来的设计风格是:整个系统由一个程序启动,再根据用户操作调用各个处理模块,根据数据结果来决定显示成什么样给用户看。就像我们平时用的各种程序的主界面。这样程序员创建好主程序以后,只要把注意力集中在开发各个子功能上就可以了。。
可是 php 大多数情况下工作于 web 环境,有“页”的概念,每次执行都是一个新的请求。这就注定了很难实现真正的 MVC,因为用户看到页面时,PHP 已经执行完了,不可能再切换去调另一个 模型M 和 视图V 。

目前自称 MVC 的各种框架。也只不过是用一个程序判断请求,加载不同的功能块。只能称之为“单点入口”,在思路上是“请求相同的部份,而包含不同的部份”。这个入口程序实际上啥也没做,所以算不上是 MVC。反而 JS 开发的富客户端更接近一些。由一个 JS 主程序,跟据用户请求决定调用哪些数据,再把界面改变成什么样。
设计风格是前人总结出来的东西,在当前语言,当然环境,当前思维方式下。比较容易继续思考的一种设计方式。MVC 只不过是其中一种,而且并不是最适合 PHP 的一种。偏偏被炒作得好像标准似的。。
如果你一定要, 就去看一下 “PHP 单点入口实现”吧,已经是比较接近的东西了。如果一次性的控制器也能算控制器的话……

使用php开发一个mvc框架 什么是MVC以及PHP怎样实现MVC

如何用PHP实现自己的MVC

MVC三个字母的含义:   M:Model 模型,负责数据库操作。   V:View 视图,负责调用Model调取数据,再调用模板,展示出最终效果。   C:Controller 控制器,程序的入口,决定改调用哪个View,并告诉View该做什么。   下面是一个超级简单的MVC结构实现: Controller.php include 'Model.php'; include 'View.php'; class Controller {     private $model     = '';     private $view     = '';          public function Controller(){         $this->model    =    new Model();         $this->view        =    new View();     }          public function doAction( $method = 'defaultMethod', $params = array() ){         if( empty($method) ){             $this->defaultMethod();         }else if( method_exists($this, $method) ){             call_user_func(array($this, $method), $params);         }else{             $this->nonexisting_method();         }     }          public function link_page($name = ''){         $links = $this->model->getLinks();         $this->view->display($links);                  $result = $this->model->getResult($name);         $this->view->display($result);     }          public function defaultMethod(){         $this->br();         echo "This is the default method. ";     }          public function nonexisting_method(){         $this->br();         echo "This is the noexisting method. ";     }          public function br(){         echo "";     } } $controller = new Controller(); $controller->doAction('link_page', 'b'); $controller->doAction(); Model.php class Model {     private $database = array(         "a"    =>    "hello world",         "b"    =>    "ok well done",         "c"    =>    "good bye",     );          //@TODO connect the database          //run the query and get the result     public function getResult($name){         if( empty($name) ){             return FALSE;         }                  if( in_array($name, array_keys( $this->database ) ) ){             return $this->database[$name];         }     }     public function getLinks(){         $links = "Link A ";         $links.= "Link B ";         $links.= "Link C ";                  return $links;     } } View.php class View {          public function display($output){ //        ob_start();                  echo $output;     } 我爱编程网

以上就是我爱编程网小编给大家带来的使用php开发一个mvc框架 什么是MVC以及PHP怎样实现MVC全部内容,希望对大家有所帮助!
与“使用php开发一个mvc框架 什么是MVC以及PHP怎样实现MVC”相关推荐
python简称是什么
python简称是什么

python简称是什么python是一种计算机脚本语言,又有胶水语言之称。生活中,一些朋友为了方便就直接念python的简称,那么python简称是什么呢?正是由于Python的文件名后缀是.py,所以,很多人,也常常用py来指代Python。python应用范围广泛:网络应用程序Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Pyt

2023-12-11 12:26:01
如何用Python编写一个素数环?
如何用Python编写一个素数环?

如何用Python编写一个素数环?代码:n=int(input("请输入最大数n:"))lists=[[1]]#多个素数环surplusnum=list(range(1,n+1))#剩余的数defsumisprime(x,y):#x与y之和是否是素数isprime=True#是否是素数s=x+y#和foriinrange(2,int(s**0.5)+1):

2023-12-11 17:02:40
如何使用Python计算两个数字的乘积或平方?
如何使用Python计算两个数字的乘积或平方?

怎样用python编出乘法算式?print('\n'.join([''.join(['%sx%s=%-2s'%(y,x,x*y)foryinrange(1,x+1)])forxinrange(1,10)]))Python写出输入二个数,求这二个数的加、减、乘、除、取余、取整、幂的值并输?当你想要让用户输入两个数字,并计算它们的加法、减法、乘法、除法、取余、取整、幂运算的结果,可以

2023-12-12 13:00:59
探月编程怎么用代码缩小图片?
探月编程怎么用代码缩小图片?

探月编程怎么用代码缩小图片?在Python中,你可以使用Pillow库来缩小图片。以下是一个简单的例子:python复制代码fromPILimportImagedefresize_image(input_image_path,output_image_path,size):original_image=Image.open(input_image_path)width,

2023-12-12 08:10:46
python xlwt excel 单元格边框,如何才能有如下的加黑边框
python xlwt excel 单元格边框,如何才能有如下的加黑边框

pythonxlwtexcel单元格边框,如何才能有如下的加黑边框borders = xlwt.Borders()borders.left = 1borders.right = 1borders.top = 1borders.bottom = 1borders.bottom_colour=0x3A    style = xlwt.XFStyle()style.borders = border

2023-12-12 18:09:59
节拍怎么控制
节拍怎么控制

节拍怎么控制节奏不准,要练习打拍子,先从跟着秒针打拍子开始。多听歌,边听边打拍子。这样看一首歌的小节数和节奏。拍号:2/4、3/4、4/42/4:二拍(XX),四二拍(每小节两拍,以四分音符为一拍)。3/4:三拍(XX)X,四三拍(每小节三拍,以四分音符为一拍)。4/4:四拍(XXXX),四四拍(每小节四拍,以四分音符为一拍)。节拍:律动中有规律的强弱模式,

2023-12-14 07:36:51
python3.5.3怎么运行程序
python3.5.3怎么运行程序

python3.5.3怎么运行程序方法如下:1、命令行运行:打开命令行终端。进入到包含用户的Python程序的目录。使用以下命令运行程序:python3.5program.py,program.py是用户的Python程序文件名。2、使用集成开发环境(IDE):安装一个Python集成开发环境,比如PyCharm、VisualStudioCode等。打开IDE并创建一个新的项目或

2023-12-12 12:23:39
python3怎么创建列表?
python3怎么创建列表?

python3怎么创建列表?Python3是一种流行的编程语言,您在一行开头看到的表示此行是您可以在Python3解释器中输入的命令。>>>您提供的代码在以开头的行上没有完整的语句,因此无法确定此代码的结果是什么。但是,如果代码是完整的,它可能会创建一个新的列表对象,并为其分配一些值。>>>list2=list2下面是如何使用Python3解

2023-12-12 20:04:52