MVC架构模式分析与设计(一)---简单的mvc架构
首先 我要感谢慕课网的老师提供视频资料
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架构的更多相关文章
- PHP实例学习之————MVC架构模式分析与设计
写博客,不容易,你们的评论和转载,就是我的动力, 但请注明出处,隔壁老王的开发园:http://www.cnblogs.com/titibili 2016年1月31日 18:53 作者:Ygirl ...
- php简单实现MVC
在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中.MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂 ...
- 设计 REST 风格的 MVC 框架
http://www.ibm.com/developerworks/cn/java/j-lo-restmvc/ 传统的 JavaEE MVC 框架如 Struts 等都是基于 Action 设计的后缀 ...
- [.NET] 一步步打造一个简单的 MVC 网站 - BooksStore(一)
一步步打造一个简单的 MVC 网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 简介 主 ...
- 使用微服务架构思想,设计部署OAuth2.0授权认证框架
1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是 ...
- [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(一)
一步步打造一个简单的 MVC 电商网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...
- 002-MVC架构,贫血的领域模型、spring mvc,webhars使用
一.MVC.贫血的领域模型 MVC理念是将视图与模型进行解耦. 贫血的领域模型 <领域驱动设计>定义了一组架构规则,能够指导我们更好地将业务领域集成到代码中. 其中一个核心理念是将面向对象 ...
- MVC 之 架构的基本原理及Asp.Net实现MVC
一.引言 许多Web应用都是从数据存储中检索数据并将其显示给用户.在用户更改数据之后,系统再将更新内容存储到数据存储中.因为关键的信息流发生在数据存储和用户界面之间,所以很多应用将数据和用户界面这两部 ...
- Java生鲜电商平台-App系统架构开发与设计
Java生鲜电商平台-App系统架构开发与设计 说明:阅读此文,你可以学习到以下的技术分享 1.Java生鲜电商平台-App架构设计经验谈:接口的设计2.Java生鲜电商平台-App架构设计经验谈:技 ...
随机推荐
- 环信SDK报错处理方法obtain an updated library from the vendor, or disable bitcode for this target. for archit
ld: '/Users/momo/Desktop/ThreeFingers/Pods/EaseMobSDKFull/EaseMobSDKFull/lib/libEaseMobClientSDK_arm ...
- Activity详解一 配置、启动和关闭activity
先看效果图: Android为我们提供了四种应组件,分别为Activity.Service.Broadcast receivers和Content providers,这些组建也就是我们开发一个And ...
- iOS多线程实现2-NSThread
NSThread是轻量级的多线程开发,OC语言编写,更加面向对象,使用起来也并不复杂,但是使用NSThread需要自己管理线程生命周期.在iOS开发中很少使用它来创建一个线程,但是经常使用它做一些延时 ...
- 遇到别人留下的storyboard的,你需要一个引导图,但是不知道怎么跳转.
首先在AppDeledate.m文件里是这样. { self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds] ...
- iOS json解析的几种方法 NSJSONSerialization,JSONKit,SBJson ,TouchJson
相关的第三方类库大家可以去github上下载 1.NSJSONSerialization 具体代码如下 : - (void)viewDidLoad { [super viewDidLoad]; NSD ...
- Windows平台分布式架构实践 - 负载均衡 上
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- SQL SERVER 2008 Reporting Services 的一些小问题集合
实验环境:服务器 Windows Server 2008 R2 Standard 64bit 数据库 SQL SERVER 2008 R2 Standard ...
- MongoDB学习笔记~MongoDBRepository仓储的实现
回到目录 仓储大叔,只要是持久化的东西,都要把它和仓储撤上关系,为啥,为的是开发人员在使用时统一,高可用及方便在各种方式之间实现动态的切换,如ef与redis和mongoDB的切换,你完成可以通过IR ...
- hadoop从非HA转到NAMENODE HA时需要注意的一个问题
配置core-site.xml 配置hdfs-site.xml 配置mapred-site.xml 配置yarn-site.xml 纷发至其他节点 修改RM 2 ..N 上面的节点信息 格式化ZK h ...
- request属性 request.getAttribute()
一.request.getParameter() 和request.getAttribute() 区别 (1)request.getParameter()取得是通过容器的实现来取得通过类似post,g ...