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

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. iOS之App加急审核详细步骤

    申请加急网址:https://developer.apple.com/appstore/contact/appreviewteam/index.html 补充:加急审核说明是可以写中文的 提交加急审核 ...

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

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

  3. 了解HTML CSS布局(层叠样式表)

    CSS全称为"层叠样式表(Cascading Style Sheets)", 它主要是用于定义HTML内容在浏览器内显示的样式, 比如文字, 颜色, 视觉上的静态效果, 布局等等. ...

  4. iOS 直播-获取音频(视频)数据

    iOS 直播-获取音频(视频)数据 // // ViewController.m // capture-test // // Created by caoxu on 16/6/3. // Copyri ...

  5. Django框架使用一 基本介绍,安装和建项篇

    Django概述 Django 是在快节奏的编辑环境中开发的,设计使得常见 Web 开发任务快速且容易;它可以编写一个数据驱动的Web应用程序,简单的说就是不需要开发者操作数据库. 设计数据模型 尽管 ...

  6. 5、软件架构师要阅读的书籍 - IT软件人员书籍系列文章

    软件架构师在项目中的地位是不言而喻的,其对于项目的需求要相对比较了解,然后对项目代码的结构需要做到覆盖全面.本文就说说作为一个软件架构师需要阅读的一些书籍. 当然,这些书籍都来源于网络,是笔者收集整理 ...

  7. Java中的Atomic包

    Atomic包的作用 方便程序员在多线程环境下,无锁的进行原子操作 Atomic包核心 Atomic包里的类基本都是使用Unsafe实现的包装类,核心操作是CAS原子操作: 关于CAS compare ...

  8. Openstack api 学习文档 & restclient使用文档

    Openstack api 学习文档 & restclient使用文档 转载请注明http://www.cnblogs.com/juandx/p/4943409.html 这篇文档总结一下我初 ...

  9. SQL Server 2012 实现分页新语法

    最近一直在看SQL Server的书,不过看的都是基础的查询流,查询在工作中用到的最多,所以能正确地查询出想要的数据也是很重要的嘛. 在书上看到在SQL Server 2012新增了一种实现分页的查询 ...

  10. jQuery的deferred对象详解

    jQuery的deferred对象详解请猛击下面的链接 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_ ...