写博客,不容易,你们的评论和转载,就是我的动力,

但请注明出处,隔壁老王的开发园:http://www.cnblogs.com/titibili

2016年1月31日 18:53 作者:Ygirl

Model(模型) View(视图) Controller(控制器)

以前大部分应用程序通过过程化模式创建

然而,代码混叠

MVC优势:

MVC开发环境:

编辑器:  EmEditor

Php环境:运用WampServe集成软件安装配置而成

下载地址:http://www.wampserver.com/en/

实例一

形如下列文件命名:

一 创建第一个控制器文件:

1.A另存为文件,窗口下方更改换行方式为仅LF(UNIX)(基于LF开发),更改编码方式为UTF-8无签名。

2.a.创建类(用class关键字)

b. 通过控制器发出show()指令

二 创建第一个模型文件(方法形同创建控制器文件,键入以下代码)

三 创建第一个视图文件(方法形同创建控制器文件,键入以下代码)

MVC运行流程

1浏览者: 调用控制器,发出指令

2.控制器: 按指令选取一个合适的模型

3,.模型:   按控制器指令取相应数据

4.控制器: 按指令选取相应视图

5.视图:   把步骤3取到的数据按用户需求显示

四 新创建一个test.php文件

MVC运行流程

1浏览者: 调用控制器,发出指令

2.控制器: 按指令选取一个合适的模型

3,.模型:   按控制器指令取相应数据

4.控制器: 按指令选取相应视图

5.视图:   把步骤3取到的数据按用户需求显示

a使用require_once()引入上面创建的三个文件

b实例化控制器文件(使用new创建名为testController的对象,并赋值给一个变量,即创建了控制器)

c执行控制器里面的方法

以下完成了MVC运行流程的第一步

再回到控制器文件,(按照MVC运行流程依次执行)

a. 控制器选取模型   $testModel=new testModel();

b,.模型取得相应数据 $data=$testModel->get();(将方法取得的数据赋值给data变量)

c.控制器选取视图    $testView=new testView();

d.显示数据          $testView->display($data);

配置测试网址

测试结果:

总结:

控制器的作用是调用模型,并调用视图,将模型产生的数据传递给视图,并让相关视图去显示。

模型的作用是获取数据并处理返回的数据。

视图的作用是将取得的数据进行组织、美化,并最终向用户终端输出。

目录规范参考:

入口程序:又称单一入口机制,指在一个Web应用程序中,所有请求都是指向一个脚本文件(如某一网站页面都是index.php?XXXX形式)所有对使用程序的访问都必须通过这个入口。

好处:访问限制只需限制一个文件;

  使得MVC得以实现。

(多个控制器,若每个程序都对每个控制器进行实例化,进行调用,再使用控制器的方法,会使得一个网站会使用很多的访问文件去实例化,维护麻烦;相反,使用单一index.php去调用控制器,再让控制器去调用M、V模块,维护起来方便。)

实例二

建立一个控制器调用函数C

//多个控制器,里面包含多种方法,给定不同参数去调用某个控制器、方法即可。

function C($name, $method){

require_once('/libs/Controller/'.$name.'Controller.class.php');//引入控制器文件

//$testController=new testController();实例化

//$testController->show();使用方法

eval('$obj = new '.$name.'Controller();$obj->'.$method.'();');//eval()将字符转化为可执行的php语句;$testController替换为$obj, test替换为’.name.’

}

建立一个模型调用函数M

//模型的方法自带参数,不封装使用起来更为灵活;控制器随引用方法,但不允许有自己的参数

function M($name){

require_once('/libs/Model/'.$name.'Model.class.php');

eval('$obj = new '.$name.'Model();');

return $obj;//返回实例化产生的对象

}

建立一个视图调用函数V

function V($name){

require_once('/libs/View/'.$name.'View.class.php');

eval('$obj = new '.$name.'View();');

return $obj;

}

创建一个入口文件index.php

a. 统一入口文件为首的url格式(如index.php?controller=控制器名&method=方法名)

b. 在入口文件里使用安全的方式接收传递来的控制器名和方法名

其中使用的daddslashes()函数,在function.php中定义

//对非法字符进行转义,因为要对GET()方法的取得进行过滤

function daddslashes($str){

//addslashes()对单引号等特殊字符进行转义

//判断当前打开状态,打开时返回true,并自动进行转义,没有打开则使用addslashes()

return (!get_magic_quotes_gpc())?addslashes($str):$str;

}

function.php文件如下:

testController.class.php文件修改为:

配置测试网址(url形式 index.php?controller=控制器名&method=方法名)

测试结果:

安装WampServe

下载地址:http://www.wampserver.com/en/

安装完在浏览器上键入localhost进行测试

打开WS,左键单击右窗口下方的图标,启动所有服务;右键图标,可进行语言设置。

www目录是WS默认的存放网页文件夹

自定义网站根目录:

更改目录:单击Apache—httpd.conf,ctrl+F进入查找,输入documentroot,找到原先的存放目录,更改为(如E;/Demo),在下拉文件,找到另一处相同目录,同样更改为(如E;/Demo)

左键单击WS图标重新启动所有服务

写入一个php文件到新指定的存放目录底下,localhost/php文件夹名,测试出来结果即成功更改网页文件夹存放目录

WS多站点配置:

WS—wamp—bin—apache—apache2.4.9—conf—extra—httpd.vhost

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host2.example.com

    DocumentRoot "c:/Apache24/docs/dummy-host2.example.com"

    ServerName dummy-host2.example.com

    ErrorLog "logs/dummy-host2.example.com-error.log"

    CustomLog "logs/dummy-host2.example.com-access.log" common

</VirtualHost>

<VirtualHost *:80>

    DocumentRoot "F:/wamp/www/Demo/test01"

    ServerName test01.com

</VirtualHost>

<VirtualHost *:80>

    DocumentRoot "F:/wamp/www/Demo/test02"

    ServerName test02.com

</VirtualHost>

/*************************Finish!***************************/

写博客,不容易,你们的评论和转载,就是我的动力,

但请注明出处,隔壁老王的开发园:http://www.cnblogs.com/titibili

真心感谢!~

(更多精彩,微信关注公众号:猿带马)

PHP实例学习之————MVC架构模式分析与设计的更多相关文章

  1. MVC架构模式分析与设计(一)---简单的mvc架构

    首先 我要感谢慕课网的老师提供视频资料 http://www.imooc.com/learn/69 下面我来进行笔记 我们制作一个简单的mvc架构 制作第一个控制器 testController.cl ...

  2. MVC架构在Asp.net中的应用和实现

    转载自:http://www.cnblogs.com/baiye7223725/archive/2007/06/07/775390.aspx 摘要:本文主要论述了MVC架构的原理.优缺点以及MVC所能 ...

  3. 从MVC框架看MVC架构的设计

    尽管MVC早已不是什么新鲜话题了,但是从近些年一些优秀MVC框架的设计上,我们还是会发现MVC在架构设计上的一些新亮点.本文将对传统MVC架构中的一些弊病进行解读,了解一些优秀MVC框架是如何化解这些 ...

  4. 从MVC框架看MVC架构的设计(转)

    尽管MVC早已不是什么新鲜话题了,但是从近些年一些优秀MVC框架的设计上,我们还是会发现MVC在架构设计上的一些新亮点.本文将对传统MVC架构中的一些弊病进行解读,了解一些优秀MVC框架是如何化解这些 ...

  5. 《MVC架构下网站的设计与实现》论文笔记(十八)

    标题:MVC架构下网站的设计与实现 一.基本信息 时间:2017 来源:广东海洋大学数学与计算机学院 关键词:网站设计:MVC 框架:数据库:网络安全 二.研究内容 1.系统的整体架构设计(以广东海洋 ...

  6. 【JAVA】基于MVC架构Java技术荟萃案例演练

    基于JAVA-MVC技术的顾客管理项目案例总结 作者 白宁超 2016年6月9日22:47:08 阅读前瞻:本文源于对javaweb相关技术和资料汇总,涉及大量javaweb基础技术诸如:Servle ...

  7. Android 四大组件 与 MVC 架构模式

    作为一个刚从JAVA转过来的Android程序员总会思考android MVC是什么样的? 首先,我们必须得说Android追寻着MVC架构,那就得先说一下MVC是个啥东西! 总体而来说MVC不能说是 ...

  8. 【PHP小项目使用MVC架构】

    小项目名称是雇员管理系统. mvc是一种项目的开发模式,中文名称为模式视图控制器,是强制程序员将数据的输入.处理.输出分开的一种开发模式. 在这个小项目中,控制器使用service作为后缀名. 项目u ...

  9. 【深入Cocos2d-x】使用MVC架构搭建游戏Four

    喜欢Four这个项目,就赶快在GitHub上Star这个项目吧! 喜欢我的文章,来微博关注我吧:王选易在学C艹 点我下载 项目起源 项目Logo: 下面是该游戏的项目地址,各位想参考源代码的同学可以到 ...

随机推荐

  1. 使用Html5+C#+微信 开发移动端游戏详细教程 总目录

    (一).序(关于作者创业失败的感想) (二).准备工作&开发环境 (三).使用html5引擎搭建游戏框架 (四).游戏中层的概念与设计 (五).游戏图像的加载与操作 (六).游戏界面布局与性能 ...

  2. Swift_3.0_取消杂乱无章的log输出

    一 举例: 输出的杂乱无章的东西 subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: , persist_lev ...

  3. Android View中的控件和监听方法...

    PS:居然三天没写博客了...今天补上...东西虽多,但是都是一些基础...代码多了一些,有人可能会这样问,粘这么多代码有毛用..其实对于一个Android的初学者来说,一个完整的代码是最容易帮助理解 ...

  4. C#ASP.NET 通用扩展函数之 LogicSugar 简单好用

    说明一下性能方面 还可以接受 循环1000次普通Switch是用了0.001秒 ,扩展函数为0.002秒  , 如果是大项目在有负载均衡的情况下完全可以无视掉,小项目也不会计较这点性能了. 注意需要引 ...

  5. ASP.NET Core学习零散记录

    赶着潮流听着歌,学着.net玩着Core 竹子学Core,目前主要看老A(http://www.cnblogs.com/artech/)和tom大叔的博客(http://www.cnblogs.com ...

  6. 图片轮播(淡入淡出)--JS原生和jQuery实现

    图片轮播(淡入淡出)--js原生和jquery实现 图片轮播有很多种方式,这里采用其中的 淡入淡出形式 js原生和jQuery都可以实现,jquery因为封装了很多用法,所以用起来就简单许多,转换成j ...

  7. [爬虫学习笔记]基于Bloom Filter的url去重模块UrlSeen

            Url Seen用来做url去重.对于一个大的爬虫系统,它可能已经有百亿或者千亿的url,新来一个url如何能快速的判断url是否已经出现过非常关键.因为大的爬虫系统可能一秒钟就会下载 ...

  8. 整理的有用的一些EF的CommonDAL小封装

    CommonDAL封装: using System; using System.Collections.Generic; using System.Data.Entity; using System. ...

  9. 记一次纠结Macbook 重装OS X的系统

    本文所有图片都是网上截图,不是实操环境.本文不具有教学意义. 起因:Macbook 白苹果了,无限菊花. 我的Macbook 只能装 OS X Mountain Lion 10.8,但是呢 MacBo ...

  10. 那些教程没有的php2-对象

    php.net 对象 在类定义内部,可以用 new self 和 new parent 创建新对象. 当把一个对象已经创建的实例赋给一个新变量时,新变量会访问同一个实例,就和用该对象赋值一样.可以用克 ...