免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1032 | 回复: 0
打印 上一主题 下一主题

经典老家MVC基本实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-21 12:57 |只看该作者 |倒序浏览

Dispatcher相关参考源码:



文件:
actions_dispatcher-2002-08-01.zip
大小:
3KB
下载:
下载

文件:
Event_Dispatcher-1.0.0.tar
大小:
8KB
下载:
下载
=>pear
-------------------------------------------------------------------------


实现mvc很简单!
把网站分为三层,
view(v)就是你所看到的网站界面
module(m)数据库处理层,专门负责数据库处理
controller(c)控制器,用于协调各项操作,相当于指挥官。
controller的任务是叫程序做什么,而module的任务是叫程序怎么做。
因此你可以很容易地实现MVC!下面是引用一位网友的最简单的MVC
MVC就不多说了,网上到处都是,各种framework基本都是基于mvc的,但是学习一个模板的代价也挺大的,而且效率也是个问题,所以我就自己实现了一下。
先来看看index.php,一共三句话,当然这是最基本的,其他功能可以自己扩展
先来看看index.php,一共三句话,当然这是最基本的,其他功能可以自己扩展
require("config.php");
require("function.php");
require("dispatcher.php");
再来看看config.php,里面定义了一些常量
//server info
define("HOST","localhost");
define("USER","root");
define("PASSWORD","123456");
define("DATABASE","article");
  
//path info
define("INCLUDE_PATH",dirname(__FILE__));
  
//controller
define("CONTROLLER_PATH",INCLUDE_PATH."/controller");
function.php里定义了一些基本的函数
//format exception
function format_exception(Exception $e){
      print  
{$e->getMessage()}
      -->
EOT;
die();
}
  
//get controller and init controller
function get_controller($controller_name){
      if(!file_exists(CONTROLLER_PATH."/{$controller_name}.php")){
            throw new Exception("there is no such a controller named $controller_name");
      }
      else{
            require(CONTROLLER_PATH."/{$controller_name}.php");
      }
      if(!class_exists($controller_name)){
            throw new exception("there is no class named {$controller_name}");
      }
}
最后来看看dispatch.php,主要是引入目标文件,并实例化
$controller = $_GET["controller"]."Controller";
$action = isset($_GET["action"])?$_GET["action"]."Action":"indexAction";
try{
      get_controller($controller);
      
      $controller = new $controller();
      
      $controller->$action();
  
}
  
catch(Exception $e){
      format_exception($e);
}
文件格式
controller的命名规则是:控制器名+”Controller”,比如:”articleController”,方法的命名规则是:方法名+”Action”,比如:”readAction”
没有写入model功能,这个只需在controller里引入就行了,比如
require(INCLUDE_PATH.”/model/articleModel.php”);
调用的时候url就像这样:”
http://www.xxxx.com/index.php?controller=article&action=read
”,如果要加入其他参数,加在后面就行了,可以顺利传到相应的action。
最后为了防止直接从controller文件夹浏览,可以加入.htaccess,内容如下
order deny,allow
deny from all


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/10599/showart_404603.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP