论坛登陆 注册 教程 笑话 影视 投稿
首页 | 页界资讯 | 网络应用 | 软件应用 | 组网技术 | 网络原理 | 聊天通讯 | 网管知识 | 帮助
笑话 | 操作系统 | 注 册 表 | 编程开发 | 数 据 库 | 媒体动画 | 网页设计 | 图形图象 | 地图
论坛 | 网络安全 | 安全防范 | 服 务 器 | 硬件学堂 | 路由技术 | 搜索研究 | 站长经验 | 投稿
影院 | 教育频道 | 特色专题 | 精文荟萃 | 注 册 码 | 论坛社区 | 网站地图 | 广告服务 | 旧版
设为首页 加入收藏
当前位置:首页>>文章>>编程开发>>php专区>>正文

理解PHP中的MVC编程之控制器

www.xker.com 作者: 来源:PHP5研究室 加入日期:2006-1-23 7:23:20

【问题提问、论坛交流】  简单来讲,控制器的作用就是接受请求它使用获取的方法,在这里是通过URI,载入一个功能模块来刷新或者提交一个表述层控制器将使用$_GET自动全局变量来判断载入哪一个模块

  一个请求的例子,看起来像这样:

  http://example.com/index.php?module=login

  这看起来很简单,但是在实现的过程中却不是这里是几个控制器能识别的argument部分:

  module定义了使用哪一个模块,如users模块
  class定义了使用哪一个功能类,如你想让用户login还是logout
  event定义了使用哪一个具体事件

  这样一个更复杂的例子可以解释上面的各个argument最终组成的请求URL:

  http://example.com/index.php?module=users&class=login

  这段请求告诉控制器应该载入users模块,然后是login类,最后因为没有定义具体事件,所以运行login::__default()默认事件

  以下是具体代码部分:

<?php
 /**
  * index.php
  *
  * @author Joe Stump <joe@joestump.net>
  * @copyright Joe Stump <joe@joestump.net>
  * @license http://www.opensource.org/licenses/gpl-license.php
  * @package Framework
 */

 require_once('config.php');

 // {{{ __autoload($class)
 /**
  * __autoload
  *
  * Autoload is ran by PHP when it can't find a class it is trying to load.
  * By naming our classes intelligently we should be able to load most classes
  * dynamically.
  *
  * @author Joe Stump <joe@joestump.net>
  * @param string $class Class name we're trying to load
  * @return void
  * @package Framework
 */

 function __autoload($class)
 {
  $file = str_replace('_','/',substr($class,2)).'.php';
  require_once(FR_BASE_PATH.'/includes/'.$file);
 }
 // }}}

 if (isset($_GET['module'])) {
  $module = $_GET['module'];
  if (isset($_GET['event'])) {
   $event = $_GET['event'];
  } else {
   $event = '__default';
  }

 if (isset($_GET['class'])) {
  $class = $_GET['class'];
 } else {
  $class = $module;
 }

 $classFile = FR_BASE_PATH.'/modules/'.$module.'/'.$class.'.php';
 if (file_exists($classFile)) {
  require_once($classFile);
  if (class_exists($class)) {
   try {
    $instance = new $class();
    if (!FR_Module::isValid($instance)) {
     die("Requested module is not a valid framework module!");
    }

    $instance->moduleName = $module;
    if ($instance->authenticate()) {
     try {
      $result = $instance->$event();
      if (!PEAR::isError($result)) {
       $presenter = FR_Presenter::factory($instance->presenter,$instance);

      if (!PEAR::isError($presenter)) {
       $presenter->display();
      } else {
       die($presenter->getMessage());
      }
     }
    } catch (Exception $error) {
     die($error->getMessage());
    }
   } else {
    die("You do not have access to the requested page!");
   }
  } catch (Exception $error) {
   die($error->getMessage());
  }
 } else {
  die("An valid module for your request was not found");
 }
 } else {
  die("Could not find: $classFile");
 }
 } else {
  die("A valid module was not specified");
}

?>

  接下来是以上代码具体的注释:

本新闻共2页,当前在第1页  1  2  

编辑:xker.com

上一篇:理解PHP中的MVC编程之MVC框架简介
下一篇:没有了
关闭窗口】【浏览次数:】【发送给好友】【收藏此页
相关文章
·理解PHP中的MVC编程之MVC框架简介·使用PHP编写基于Web的文件管理系统·使用 MySQL 开始 PHP 会话
·.Net环境下基于Ajax的MVC方案·ASP、JSP、PHP 三种技术比较·PHP应用程序加速探索之简介 
·PHP应用程序加速探索之简介 ·在Win2003 IIS中安装PHP·有效防御PHP木马攻击的技巧 
·最令PHP初学者头痛的十四个问题 ·初学者必读 PHP常用开发工具分析
推荐文章 最新文章 热门文章
·3DMAX打造首饰美图
·VB.net制作下雪的特技景象
·组建高速又安全的文件服务器
·菜鸟+Sa+注入工具组合=肉鸡成群
·VC++实现Windows系统回收站的文件存取
·用JavaHelp系统开发和交付更好的文档
·Linux系统下的多线程编程入门
·武林绝技之笔记本操作系统优化
·Fireworks绘制新春贺卡:娃娃放鞭炮(
·制作一条龙 教你如何将下载的电影刻成
·一分钟攻破ADSL 盗遍宽带密码
·Oracle数据库游标使用大全
·Oracle9i中监视索引的使用
·使用Oracle实现实时通信
·制作MP3播放器TXT图书之三剑客
·理解PHP中的MVC编程之控制器
·理解PHP中的MVC编程之MVC框架简介
·使用PHP编写基于Web的文件管理系统
·Windows发展史
·Windows 2.0
·Windows 3.0
·Windows 3.1
·Windows NT 3.1
·Windows 3.2
·Windows 95
·Windows NT 4.0
·Windows ME
·Windows 2000
·Windows XP
·Windows Server 2003
·个人简历表格
·免费代理IP(每日更新)
·QQ密码丢失后能做的事情:快速找回密码
·Norton AntiVirus 2006 注册码(激活
·WinRAR 3.51 注册码
·找回QQ密码的注意事项 
·史上最强QQ个人档案资料欣赏
·系统优化 专题
·最经典的黑客入门教材
·豪杰超级解霸V9.1正版注册码
·求职简历封皮
·怎样查找对方的IP地址
·FlashFXP 3.3.1 build 1089注册码
·ACDSee v8.0注册码
·2005最新最全注册码集中营(11月更新)
评论 本站声明
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
【注】 发表评论必需遵守以下条例:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
  • 本站大部分为网络转载,如有版权问题,请通知我们,我们立即更正!

设为首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003-2006 xker.com All rights reserved. 网站合作、广告联系QQ:12231446
小新技术网 冀ICP备05002857号