导航:首页 > 编程语言 > php中的mvc

php中的mvc

发布时间:2022-10-01 04:17:05

1. 什么是MVC以及php怎样实现MVC

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

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

2. PHP网页中的MVC

介绍MVC的地方都明确告诉你混合的害处了
如果是小规模的网站其实倒差不了多少
做的越大越体现MVC的好处
不过做PHP建议学学Smarty
现在会Smarty也是做PHP的基本要求了

MVC是指导思想是个概念
Smarty是落实这个指导思想的工具

3. 详解PHP实现MVC的几种方法

相信所有习惯了使用MVC来组织自己的项目的人,让他选择一个新的项目构架时,一定不会放弃MVC。传统的面相过程式的开发方式在处理中型以上的应用时,就开始显得力不从心。即便我们能够快速的完成需求,但是在需求发生变更后或者进行后期维护的时候,我们会深深地陷入我们早期搭建的陷阱中。什么是MVC?关于MVC的定义和解释,可以说多种多样。我们可以在Wiki或者[2]中找到更为详尽的解释,这里我并不打算,也没有能力进行深入的讲解,从PHP开发的角度来讲,MVC可以概括为:视图(The View):一说到视图,我们很多人都会想到模板引擎(诸如Smarty等等)。其实就是各种各样的输出,比如说html模板和javascript文件等。模块(The Model)模块代表了程序的逻辑,在企业应用中通常称为业务逻辑层。一般来讲,这一层完成的工作是把原始的数据处理成按照我们设计的数据结构存储的有意义的数据序列,并将这些数据交给视图去处理。通常情况下, 模块中会利用一个数据抽象类来进行与数据操作有关的处理。 关于MVC的是否适合PHP的争论也很多,人们不断的讨论MVC是否适合PHP[3],现在也已经有了很多的MVC框架,诸如PHP MVC Frameworks中列出的[4]。那么,为什么人们这么热衷于MVC,我们为什么要使用MVC在我们的设计中呢。为什么用MVC?MVC最早是用来解决桌面GUI的编程问题,最早的MVC框架应该是Sun在1999年提出的Model 2,后来演变成了Struts。MVC带给人们深刻的印象,但是我们在使用的过程中,却并没有认真的想过为什么使用MVC。在传统的桌面应用中,一旦Model中有时间发生,我们可以主动的让View界面进行刷新,从而展示后台发生的变化。而在Web应用中,我们似乎限于传统的Http的Request/Response的方式,我们似乎没有办法让用户端进行更新。这一段讨论,并不是认为MVC不能够用来进行WEB应用的开发,而是觉得从某种程度上来说,他还不是最合适的。关于使用MVC的争论还有很多[1],但是相信所有习惯了使用MVC来组织自己的项目的人,让他选择一个新的项目构架时,一定不会放弃MVC。如何PHP实现MVC?下面是一个超级简单的MVC结构实现,甚至连数据源都用了一个内置的固定数组,虽然简单,但其实众多的PHP Framework核心实现的思想应该和这个是差不多的,只不过一些framework提供了更多的方便开发者使用的工具,我也想自己来实现一个PHP的框架,目前正在着手策划中,也希望自己能够从框架的开发中学习到更多的PHP设计思想和方法。

4. PHP在MVC中方法不能重复调用

因为require,include(包括_once的)都会把被引用的文件里的变量和方法带到新文件里去。
那么在b、php中不能再定义一个相同的函数abc了,因为require,include(包括_once的)都会把被引用的文件里的变量和方法带到新文件里去,相当于在新文件里定义一样。
所以当被引用文件里有函数且该文件已经被调用过一次了,那么在引用文件里使用require,include(有_once的就不会,因为它们发现已经调用过就不会再次调用)或者在调用之后定义一个相同的函数,则会出现redeclare错误。

5. 如何用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;     }     

6. php中MVC的开发模式如何去理解

MVC设计模式把一个软件组件区分为三个不同的部分,model,view,controller。

MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。MVC模式最早是smalltalk语言研究团提出的,应用于用户交互应用程序中。smalltalk语言和java语言有很多相似性,都是面向对象语言,很自然的SUN在petstore(宠物店)事例应用程序中就推荐MVC模式作为开发Web应用的架构模式。MVC模式是一种架构模式,其实需要其他模式协作完成。在J2EE模式目录中,通常采用service to worker模式实现,而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式组成。而Struts只实现了MVC的View和Controller两个部分,Model部分需要开发者自己来实现,Struts提供了抽象类Action使开发者能将Model应用于Struts框架中Model是代表组件状态和低级行为的部分,它管理着自己的状态并且处理所有对状态的操作,model自己本身并不知道使用自己的view和controller是谁,系统维护着它和view之间的关系,当model发生了改变系统还负责通知相应的view。

View代表了管理model所含有的数据的一个视觉上的呈现。一个Model可以有一个以上的View,但是Swing中却很少有这样的情况。

Controller管理着model和用户之间的交互的控制。它提供了一些方法去处理当model的状态发生了变化时的情况。

7. php怎么实现mvc

MVC三个字母的含义:

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

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

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

下面是一个超级简单的MVC结构实现:

Controller.php

include'Model.php';
include'View.php';

classController{
private$model='';
private$view='';

publicfunctionController(){
$this->model=newModel();
$this->view=newView();
}

publicfunctiondoAction($method='defaultMethod',$params=array()){
if(empty($method)){
$this->defaultMethod();
}elseif(method_exists($this,$method)){
call_user_func(array($this,$method),$params);
}else{
$this->nonexisting_method();
}
}

publicfunctionlink_page($name=''){
$links=$this->model->getLinks();
$this->view->display($links);

$result=$this->model->getResult($name);
$this->view->display($result);
}

publicfunctiondefaultMethod(){
$this->br();
echo"Thisisthedefaultmethod.";
}

publicfunctionnonexisting_method(){
$this->br();
echo"Thisisthenoexistingmethod.";
}

publicfunctionbr(){
echo"<br/>";
}
}


$controller=newController();
$controller->doAction('link_page','b');
$controller->doAction();

Model.php

classModel{
private$database=array(
"a"=>"helloworld",
"b"=>"okwelldone",
"c"=>"goodbye",
);

//@TODOconnectthedatabase

//runthequeryandgettheresult
publicfunctiongetResult($name){
if(empty($name)){
returnFALSE;
}

if(in_array($name,array_keys($this->database))){
return$this->database[$name];
}
}

publicfunctiongetLinks(){
$links="<ahref='#'>LinkA</a>&nbsp;&nbsp;";
$links.="<ahref='#'>LinkB</a>&nbsp;&nbsp;";
$links.="<ahref='#'>LinkC</a>&nbsp;&nbsp;";

return$links;
}
}


View.php

classView{

publicfunctiondisplay($output){
//ob_start();

echo$output;
}

}

8. 谁能帮我解释下PHP的MVC框架呀用通俗易懂的语言吧,我是小白, 感激不尽!

我说个最通俗的把(大神别喷)
所谓的mvc,其实就是把代码分开写
一个正常的网页,肯定是先有php运算,然后再有html显示,你把php运算和html显示,用2个文件分开写,就有了最简单的模板分类的概念
MVC一样的意思,就是把模型控制器之类的分开写,分开写的好处很多,在这里不多说,道理想想就明白,细分后分配工作就简单

9. php常用的MVC原理以及设计模式

设计模式不仅代表着更快开发健壮软件的有用方法,而且还提供了以友好的术语封装大型理念的方法。例如,您可以说您正在编写一个提供松散耦合的消息传递系统,也可以说你正在编写名称为 观察者 的模式。
用较小的示例展示模式的价值是非常困难的。这往往有些大材小用的意味,因为模式实际上是在大型代码库中发挥作用的。本文不展示大型应用程序,所以您需要思索的是在您自己的大型应用程序中应用示例原理的方法 —— 而不是本文演示的代码本身。这不是说您不应该在小应用程序中使用模式。很多良好的应用程序都以小应用程序为起点,逐渐发展到大型应用程序,所以没有理由不以此类扎实的编码实践为基础。

10. PHP MVC结构 M C 什么意思

(1)什么是mvc?
是一种软件架构的思想,将软件按照模型、视图、控制器
来划分。模型负责封装业务处理逻辑,视图负责输入和输出(
表示逻辑),控制器负责协调模型和视图。
模型:
封装:需要先写接口,然后实现接口中声明的方法。
业务处理逻辑:业务本身的处理流程,另外,还包括
为保证业务处理正常可靠执行的基础服务(事务、安全、
日志等等)。
视图:
输入:提供相应的操作界面,方便用户使用。
输出:将模型返回的结果以合适的方式来展现。
控制器:
协调: 视图向控制器发请求,由控制器来选择相应的
模型来处理;模型返回的结果给控制器,由控制器来
选择合适的视图,生成相应的界面给用户。
(2)mvc最大的优点:
可以实现模型的复用:
一方面,模型只返回处理结果,并不用关心这些
结果如何展现。我们可以提供不同的视图来展现这些
数据;另外一方面,对于同一个模型,我们可以提供
不同的操作界面来访问。
(3)开发一个web应用,如何使用mvc? (javaee)
1)模型使用java类来实现,视图使用jsp,
控制器使用servlet或者是filter来实现。
2)所有请求先发送给控制器(servlet),由控制器去选择
模型(java类)来处理;模型的处理结果交给控制器,控制器
选择视图(jsp)。

阅读全文

与php中的mvc相关的资料

热点内容
残芯twrp解压密码 浏览:162
数控车智能编程 浏览:979
php正则表达式匹配任意字符 浏览:320
在文件夹什么word文档 浏览:991
刺激爱情片 浏览:644
电影迷途少女微笑片段 浏览:722
现在还有什么网站能看 浏览:161
韩国电影在哪个视频看 浏览:808
android观察者模式使用 浏览:567
服务器03系统和08有什么区别 浏览:723
程序员都是如何自学的 浏览:938
迅雷影院类似的网站 浏览:492
韩国电影吻戏电影推荐5个小时合集 浏览:82
有一部小说女主角叫苏 浏览:299
一女主多男主的小说在线阅读 浏览:810
电影院的人可以携带多大孩子 浏览:630
云服务器nginx集群怎么弄 浏览:741
热感1975在线观看 浏览:205
女主被几个男主囚禁,逃跑4年后回来 浏览:126
都市绝世战神叶凌天 浏览:754