首先 我要感谢慕课网的老师提供视频资料

http://www.imooc.com/learn/69

下面我来进行笔记

我们制作一个简单的mvc架构

制作第一个控制器 testController.class.php

<?php
/**
*
*/
class testController
{
	function show(){
		// 控制器的作用是调用模型,冰调用视图,将模型产生的数据传递到视图
		// 让相关视图去显示
		echo "hello world";
	}
}

 制作第一个模型 testModel.class.php

<?php
 /**
 *
 */
 class testModel
 {
 	// 模型的作用是获取数据并处理返回数据
 	function get(){
 		return "hello world";
 	}
 }

 制作第一个视图  testView.class.php

<?php
/**
*
*/
class testView
{
	function display($data){
		// 视图的作用是将取得的数据进行组织,美化等,并最终向用户输出
		echo $data;
	}
}

 制作第一个入口文件 test.php

<?php
/*********************
第一步 浏览器   》 调用控制器,对他发出指令
第二步 控制器   》 按指令选取一个合适的模型
第三步 模型     》 按控制器指令选取相应的数据
第四步 控制器   》 按指令选取相对应的视图
第五步 视图     》 把第三步渠道的数据按用户想要的样子显示出来
*****************************/
require_once ('testController.class.php');
require_once ('testView.class.php');
require_once ('testModel.class.php');

$testController=new testController();
$testController->show();
?>

 这个时候我们要对控制器的文件进行改造

?php
/**
*
*/
class testController
{
	function show(){
		// 控制器的作用是调用模型,冰调用视图,将模型产生的数据传递到视图
		// 让相关视图去显示
		$testModel=new testModel();
		$data=$testModel->get();
		$testView=new testView();
		$testView->display($data);
	}
}

   如果没错的话 那么就会得到hello world这句话

 那么一个很简单的mvc架构已经形成了 我们现在要对其进行添加功能使其能够应对需求

架构的目录如下

index.php 入口文件

config.php配置文件

function.php 全局文件

libs 类库

-------Controller  控制器

--------Model      模型

--------View       视图

--------ORG      第三方类库

<?php
// ********************
// 第一步 浏览器   》 调用控制器,对他发出指令
// 第二步 控制器   》 按指令选取一个合适的模型
// 第三步 模型     》 按控制器指令选取相应的数据
// 第四步 控制器   》 按指令选取相对应的视图
// 第五步 视图     》 把第三步渠道的数据按用户想要的样子显示出来
// ****************************
// require_once ('testController.class.php');
// require_once ('testView.class.php');
// require_once ('testModel.class.php');

// $testController=new testController();
// $testController->show();
//

// url形式 index.php?controller=控制器&method=方法名
require_once('function.php');require_once('config.php');
$controllerAllow= array('test','index','show');
$methodAllow = array('test','index' );
$controller=in_array($_GET['controller'],$controllerAllow)?daddslashes($_GET['controller']):'index';
$method=in_array($_GET['method'],$methodAllow)?daddslashes($_GET['method']):'index';
C($controller,$method);

 ?>

  首先我们对之前的入口文件注释掉  我们此时应该引入一个全局的文件和一个配置文件

然后我们通过控制器的传入的控制器名和控制器的方法进行路由重置使其得到相关的结果输出

可以得到基本的代码片段

$controller=$_GET['controller']);

此时我们要考虑一下的因素

  1.没有传入控制器的名称是 怎么办?

  2。传入的控制器名称不合法的时候,怎么办?

3.转入的控制器的名称为私密的时候,不可以外部调用的时候,怎么办?

结合以上三个因素  可以把代码改为

$controllerAllow= array('test','index','show');
$methodAllow = array('test','index' );
$controller=in_array($_GET['controller'],$controllerAllow)?daddslashes($_GET['controller']):'index';
$method=in_array($_GET['method'],$methodAllow)?daddslashes($_GET['method']):'index';

  由于重复的利用了进行路由的跳转  这个时候我们应该定义一个C函数来进行  全局化调用

下面我们贴下了function.php中的函数C的片段

function C($name,$method){
	require_once ('/libs/Controller/'.$name.'Controller.class.php');
	 eval('$obj = new '.$name.'Controller();$obj->'.$method.'();');
}

  访问对应的控制器的方法,eval可以进行对应的字符进行位置上的拼接

其他的函数如下

function M($name){
	require_once ('/libs/Model/'.$name.'Model.class.php');
	eval('$obj=new '.$name.'Model();');
	return $obj;
}

function V($name){
	require_once ('/libs/View/'.$name.'View.class.php');
	eval('$obj=new '.$name.'View();');
	return $obj;
}
function daddslashes($str){
	return (!get_magic_quotes_gpc()?addslashes($str):$str);
}

  

MVC架构模式分析与设计(一)---简单的mvc架构的更多相关文章

  1. PHP实例学习之————MVC架构模式分析与设计

      写博客,不容易,你们的评论和转载,就是我的动力, 但请注明出处,隔壁老王的开发园:http://www.cnblogs.com/titibili 2016年1月31日 18:53 作者:Ygirl ...

  2. php简单实现MVC

    在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中.MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂 ...

  3. 设计 REST 风格的 MVC 框架

    http://www.ibm.com/developerworks/cn/java/j-lo-restmvc/ 传统的 JavaEE MVC 框架如 Struts 等都是基于 Action 设计的后缀 ...

  4. [.NET] 一步步打造一个简单的 MVC 网站 - BooksStore(一)

    一步步打造一个简单的 MVC 网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 简介 主 ...

  5. 使用微服务架构思想,设计部署OAuth2.0授权认证框架

    1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是 ...

  6. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(一)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...

  7. 002-MVC架构,贫血的领域模型、spring mvc,webhars使用

    一.MVC.贫血的领域模型 MVC理念是将视图与模型进行解耦. 贫血的领域模型 <领域驱动设计>定义了一组架构规则,能够指导我们更好地将业务领域集成到代码中. 其中一个核心理念是将面向对象 ...

  8. MVC 之 架构的基本原理及Asp.Net实现MVC

    一.引言 许多Web应用都是从数据存储中检索数据并将其显示给用户.在用户更改数据之后,系统再将更新内容存储到数据存储中.因为关键的信息流发生在数据存储和用户界面之间,所以很多应用将数据和用户界面这两部 ...

  9. Java生鲜电商平台-App系统架构开发与设计

    Java生鲜电商平台-App系统架构开发与设计 说明:阅读此文,你可以学习到以下的技术分享 1.Java生鲜电商平台-App架构设计经验谈:接口的设计2.Java生鲜电商平台-App架构设计经验谈:技 ...

随机推荐

  1. Civil 3D API二次开发学习指南

    Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...

  2. Objective-C Runtime 运行时之一:类与对象

    Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...

  3. Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作

    Oracle中对数据对象和数据的管理,无疑都是使用PL/SQL Developer来进行管理,该工具也提供给我们很多方便.快捷的操作,使得我们不再为Oracle本身丑陋.难用的UI而抱怨.由于我们一般 ...

  4. Linux查看系统开机时间

    有时候需要查看Linux系统运行了多久时间,此时需要知道上次开机启动时间: 有时候由于断电或供电故障突然停机,需要查看Linux开机时间/重启时间:  下面总结一些查看Linux开机关机时间的方法(非 ...

  5. Linux命令学习总结:hexdump

    命令简介: hexdump是Linux下的一个二进制文件查看工具,它可以将二进制文件转换为ASCII.八进制.十进制.十六进制格式进行查看. 指令所在路径:/usr/bin/hexdump 命令语法: ...

  6. [AlwaysOn Availability Groups]DMV和系统目录视图

    DMV和系统目录视图 这里主要介绍AlwaysON的动态管理视图,可以用来监控和排查你的AG. 在AlwaysOn Dashboard,你可以简单的配置的GUI显示很多可用副本的DMV和可用数据库通过 ...

  7. Linux 下.desktop 桌面程序图标文件编写方式

    [Desktop Entry] //每个desktop文件都以这个标签开始,说明这是一个Desktop Entry文件 Version = 1.0 //标明Desktop Entry的版本(可选) N ...

  8. POJ2479 Maximum sum[DP|最大子段和]

    Maximum sum Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 39599   Accepted: 12370 Des ...

  9. print输出格式总结

    妈的,今天又被printf坑了一回...看来需要一次性总结书所有结果,省的又出现这样那样的麻烦.. #include<stdio.h> #include<string.h> # ...

  10. JSP前三章测试改错

    分析:文件.数据库都是持久化保存数据的,所以是正确的,而servletcontext是上下文对象当然也可以.所以正确答案为A 分析: A:判断学员是否手动安装过Tomcat(练习熟练度) B:使学员了 ...