⑴ 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的状态发生了变化时的情况。
⑵ 如何用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 三层架构开发
php 里很少用mvc架构
mvc架构是一个很优秀的思想,
不分语言
如果你会,你可以把它用在php里,
如果不会就不用学了,
php里多用到template
常用的有smarty ,st smarttemplate,phplib template
再用数据库类:phplib db_mysql.inc
php是c语言的化身
⑷ php mvc框架
MVC不是建立几个包而已,而是一种思想,当然几个包会让你把这个思想实例出来- -,比如说你有一个表,而已你实例这个表的话,就要有一个类来囊括其中的字段,包括一些_get,_set方法,然后用另一个类继承此类,封装一些添删改查的等等方法,这个类就可以理解成Model层,可以放在一个包下,而逻辑页面望望要require_noce此文件类来实例化此类,通过对象来调用其中的方法,进而显示给客户,php中C层和V层在不用模板的情况下(比如说smarty)不用分离的那么明显,要么怎么是php那~小快灵么~整体上不局限于java那种纯的面向对象,但又不失对数据安全性与维护性特点,这就是php的MVC~
⑸ php如何实现mvc框架,一定要突出php实现,不是其他语言!!!求大神(最好有步骤)
第一步,单一入口,任何页面都请求的是根目录index.php文件,通过querystring或者pathinfo两种方式任选一种或两种都用来获取参数。如果能用URL重写隐藏URL地址中的index.php更好。
第二步,在index.php中处理接受到的参数,至少要从这些参数中获得控制器(MVC中的C)的名称,和方法的名称,控制器是一个类,有了控制器的名称就可以调用这个类,并通过方法的名称来执行控制器里面的某一个方法,其它参数可以作为这个方法的参数。如果项目较大,还可以把控制器分成不同模块,放在不同目录里。
第三步,在控制器里面处理用户提交数据,执行流程控制,最后将结果输出到视图文件(MVC中的V)上,视图文件也可以叫模板,可以在控制器里直接include,也可以使用模板引擎。
补充1:模型(MVC中的M)指的是数据库模型,也就是各个数据表的数据处理逻辑,你可以做一个数据库的操作类,也可以做一个ORM对象关系映射框架,在控制器中需要处理数据的时候直接调用就行了。其实PHP中的M比较模糊,看你的习惯,本来MVC开发模式就是为了提高开发效率的,所以你觉得怎么方便怎么来。
补充2:你还可以把常用的功能都封装成类,一个类实现一个功能,这些类的集合就是类库,就是我们常说的轮子。简单的功能也可以做成函数。总之,在需要的时候调用就行了。
补充3:现在几乎所有主流的PHP框架都是MVC,你如果已经明白了PHP的编程基础,不妨可以学习一两种框架,这样你很快就明白MVC了,并且可以开发自己的框架。
补充4:你以为这么多字我是复制的吗?我可真的都是手打出来的,我一定是太闲了,采纳吧!
⑹ 什么是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 框架,比如ThinkPhp,控制器集成父类,在父类里面已经有调度相关视图类的操作了。
所以再赋值的时候,只需要使用对应的方法,(TP 的assign 方法,之后 display,就可以在视图里面显示了。)
大致思路就是 你的控制器需要调用 视图类的一些方法,之后通过视图 提供的方法显示页面。
学习MVC 推荐使用一些框架,比如ThinkPHP,你可以看一下源码。会让你受益匪浅的。
⑻ 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> ";
$links.="<ahref='#'>LinkB</a> ";
$links.="<ahref='#'>LinkC</a> ";
return$links;
}
}
View.php
classView{
publicfunctiondisplay($output){
//ob_start();
echo$output;
}
}
⑼ PHPmvc开发
看不清楚 贴上代码
⑽ 看了fleaphp地实例 自己对mvc的理解难道是错误地 - PHP框架开发
原帖由 于 2008-8-21 09:20 发表 [i]/*** 加载模型??控制器?* */class App_Run{? ?? ???public function routing(){? ?? ?? ?? ?? ? $model = MOBILE_MODEL.\'_\'.MODEL_SWITCHING.\'_\'.$_REQUEST[\'do\'];//Moudels/default/Index.php? ?? ?? ?? ?? ? if(class_exists($mode ... 我个人认为model层和view层应该是完全没有关系的。好比饭店的厨师(model)和饭店的吃客。店小二是控制器层。输出v层和衔接model层应该在控制器层来操作。 查看原帖>>