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

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. include的用法例子,以及include+merge的用法例子

    [include+LinearLayout]的使用例子 AndroidIncludeLayout.java package com.AndroidIncludeLayout; import andro ...

  2. ReactiveCocoa代码实践之-更多思考

    三.ReactiveCocoa代码实践之-更多思考 1. RACObserve()宏形参写法的区别 之前写代码考虑过 RACObserve(self.timeLabel , text) 和 RACOb ...

  3. asp.netDataTable导出excel方法(1)

    先来写一段代码,这段代码也是我在网上找的,但是他那个原先有点问题,我对他那个进行了修改,现在这个代码是我修改改过的,应该没有问题的. public int StreamExport(System.Da ...

  4. 最新深度技术GHOST XP系统旗舰增强版 V2016年

    来自系统妈:http://www.xitongma.com 深度技术GHOST xp系统旗舰增强版 V2016年 系统概述 深度技术ghost xp系统旗舰增强版集合微软JAVA虚拟机IE插件,增强浏 ...

  5. 【产品 & 设计】入门 - 工具篇 - Sketch + Skala Preview

    前言 做产品和设计快 1 年了,积累了一点经验分享一下 —— 抛砖引玉,欢迎交流. 声明  欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: ht ...

  6. numpy中matrix的特殊属性

    一.matrix特殊属性解释 numpy中matrix有下列的特殊属性,使得矩阵计算更加容易 摘自 NumPy Reference Release 1.8.1 1.1 The N-dimensiona ...

  7. Oracle数据泵(Data Dump)错误汇集

    Oracle数据泵(Data Dump)使用过程当中经常会遇到一些奇奇怪怪的错误案例,下面总结一些自己使用数据泵(Data Dump)过程当中遇到的问题以及解决方法.都是在使用过程中遇到的问题,以后陆 ...

  8. CREATE FILE encountered operating system error 5(Access is denied.)

    这篇博文主要演示"CREATE FILE encountered operating system error 5(Access is denied.)"错误如出现的原因(当然只是 ...

  9. 第一次写博客Poj1044

    Date bugs Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3005   Accepted: 889 Descript ...

  10. 从零自学Hadoop(09):使用Maven构建Hadoop工程

    阅读目录 序 Maven 安装 构建 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Source ...