1. 深入了解php框架mvc设计模式的原理
现在的PHP框架太多了,如yii codeigniterlaravel thinkphp 一看文档就一大堆英文资料,学也学不过来,可是上班时候公司要求你会这个,有的要求你会那个,看书上的理论又假大空,不知道在说什么东西,看实际的例子代码又太复杂庞大,所以今天就做一个简单的小例子主要来给中级阶段的php同学了解MVC的共同原理,了解这些原理自己也可以设计一个mvc 框架
先创建一个主流框架的目录,包含控制器,数据模型,视图显示,3个文件夹,和一个入口文件
现在来设计一个路由地址,http://localhost/mvc/index.php?c=控制器名&a=方法名¶m=参数名;然后写在入口文件里的获取路由的代码,如下图所示,这样写就能获取不同的控制器名字和不同的方法,由入口文件获取这些控制器和方法名,参数后就传入指定的控制器方法名中
现在写控制器的类和方法,便于接受入口文件传入的值,控制器的作用就是协调调用数据处理和显示样式
现在来写好数据处理类,数据处理主要是依靠mysql等和视图显示类,视图主要就是把内容显示出来,一般由smarty代替,数据处理文件名model.php,视图显示index.php
现在输入http://localhost/mvc/index.php?c=控制器名&a=方法名¶m=参数名 看他们都显示出来了,一个简单的框架就完成了,大家有机会自行扩展吧!
那么控制器和视图,数据的关系是什么呢?一般具体中是从入口文件得到用户输入的控制器和方法名,参数,再传给用户指定的控制器,再由控制器(a)把参数传给数据处理(m),m处理后返回给a,a 将得到的内容传给视图显示(v),v再把他显示出来。这只是一个简单的MVC设计模式而已,大家可以在这上面设计出比较复杂的MVC模式
2. php架构,mvc开发模式,php程序员工作~
PHP开发框架背后的思想被称为“模型—视图—控制器”(MVC)。MVC是这样一种架构模式,它隔离了业务逻辑与UI,允许其一改变而另一者不受影响。(也可以说是关注点的隔离)在MVC中,模型负责数据,视图负责表现,控制器则是程序主体或者说是负责业务逻辑。从本质上说,MVC拆分了一个程序的开发过程,这样你就可以修改独立的每一部分,而其他部分不受影响,这是十分重要的,它使得编写PHP代码更为快捷简单
开发者可能出于不同的考虑而使用PHP开发框架,不过首当其冲的原因是为了加速开发过程。相似工程之间的代码重用能够节省开发者大量的时间和精力。PHP开发框架内置了预建的模块,免去了冗长又令人厌烦的编程工作。这样开发者就能够把时间活在开发实际程序上,而不是每一次都要为每一个项目重建基础模块。
3. 如何实现PHPmvc框架里的二级联动
js代码
var currentShowCity=0;
$(document).ready(function(){
$("#province").change(function(){
$("#province option").each(function(i,o){
if($(this).attr("selected"))
{
$(".city").hide();
$(".city").eq(i).show();
currentShowCity=i;
}
});
});
$("#province").change();
});
function getSelectValue(){
alert("1级="+$("#province").val());
$(".city").each(function(i,o){
if(i == currentShowCity){
alert("2级="+$(".city").eq(i).val());
}
});
}
html代码
<select id="province">
<option>----请选择省份----</option>
<option>北京</option>
<option>上海</option>
<option>江苏</option>
</select>
<select class="city">
<option>----请选择城市----</option>
</select>
<select class="city">
<option>东城</option>
<option>西城</option>
<option>崇文</option>
<option>宣武</option>
<option>朝阳</option>
</select>
<select class="city">
<option>黄浦</option>
<option>卢湾</option>
<option>徐汇</option>
<option>长宁</option>
<option>静安</option>
</select>
<select class="city">
<option>南京</option>
<option>镇江</option>
<option>苏州</option>
<option>南通</option>
<option>扬州</option>
</select>
4. 简述MVC思想与PHP如何实现MVC
简单的说就是将网站源码分类、分层。
MVC三个字母的含义:
M:Model 模型,负责数据库操作。
V:View 视图,负责调用Model调取数据,再调用模板,展示出最终效果。
C:Controller 控制器,程序的入口,决定改调用哪个View,并告诉View该做什么。
如此说来,程序的执行顺序是C-V-M 或 C-M ,和MVC的名字正好相反。
5. 详解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设计思想和方法。
6. PHP程序,不用框架,如何写成MVC模式的程序呢
至于M层,即model层,是要对数据库的操作即一些数据相关操作,可以单独抽
出来封装函数或者是一个类,由C层调用其中的方法来实现与页面交互的操作请
求,所有接受或者受到的数据经过C层调用M层进行操作,并反馈C层,提示在V
层; 通俗点讲,就是说你把一些具体的方法及操作数据库的执行方法都封装成
函数或者类,在另一个文件中,然后由C层去引用调用或者继承,从而实现传统
的MVC。
7. php如何实现mvc+l,思路是什么
M model 一般是控制数据库、资源、对象属性的
V view 视图,也就是给客户呈现的UI
C controller 逻辑事务处理器,主要针对客户端传来的数据该怎么处理、输出,
L Language 国内的人比较少听说,我们河南新社 经常给国外的客户做,他们要求前台UI的多数文本,是可以轻松修改,或者支持多国语言。这时候,M和C就不能简单的把文本固定写到代码里,而是用$this->language->get['text_customer'] 这个变量来替代以前的 "客户"这样一个文本;然后建立一个language库,结构上跟MCV平行。
当然我也听某群里的“大神”给别人解释是lib,我是不赞同的,说到底这个大神没有接触到国外的业务,而国内小型业务还不要去语言分离或者多语言。如果是是lib,那就是引擎层面的了,跟mvc在结构上不是平行的,不如说 Catalog(MVC)+System(Lib+Engine)