http://blog.mvpcn.net/chagel/archive/2004/03/24/536.aspxhttp://blog.mvpcn.net/chagel/archive/2004/04/06/711.aspx

解决方案 »

  1.   

    正立志于 用ASP 实现mvc 基本框架已经实现,有空讨论一下
      

  2.   

    我用自己的一套mvc架构,教复杂.
      

  3.   

    我用的是smarty了,类似于MVC模式,除了C以外,其它的都用类来实现!一两句说不清,有空交流交流了!:)
      

  4.   

    我的模式以前贴过,有些还有待于修改!系统结构
    |-index.php //主入口
    |-XXXXX.php //其它功能程序(略)
    |-list_product.php //显示产品列表程序
    |-config.inc.php 配置文件
    |-templates //放模板文件
    |-images    //放图片文件
    |-class     //类库
    |-admin     //后台管理程序
    -------------------------------------
    class文件夹下 (以一个功能模块为例)
    |-mysql.inc.php  //数据库抽象类
    |-product.inc.php //产品MODEL类
    |-view_product.inc.php  //产品VIEW类
    -------------------------------------
    以list_product.php为例,程序实现如下
    ==========包含相关类库==================
    require_once("config.inc.php");
    require_once("class/mysql.inc.php");
    require_once("class/product.inc.php");
    require_once("class/view_product.inc.php");
    require_once("class/template.inc.php"); //使用了phplib的模板程序
    ==========初始化 =======================
    $db = & new mysql();         //数据库连接由构造函数完成
    $pro = & new product($db);
    $v_pro = & new view_product($pro);
    $tpl = & new template($TEMPLATE_DIR); 
    ============  构造列表条件 =================
    if (isset($_GET['cat']))
    $condition['cat'] = $_GET['cat'];
    if (isset($_GET['start']))
    $condition['start'] = $_GET['start'];
    else
    $condition['start'] = 0;
    ============ 构造列表条件结束 ===============
    $pro_list = $v_pro->product_list($condition);  //调用方法生成产品列表
    $tpl->set_file("product", "product.htm");
    $tpl->set_var("pro_list", $pro_list);  //解析到模板
    $tpl->pparse("out", "product");
    -----------------------------------------------------------
    总结:
    在开发过程中,一开始是将列表及搜索产品程序分两个函数来做,我开始是由用户提交的表单生成sql语句,保存在session中,然后将SQL语句传入函数,这样就没有很好的实现逻辑层的作用,即不在表现层写sql语句,后现经过思考,将所有产品的列表程序(当然包括条件查询)都用一个函数来写,根据传递的数组的键值来组合查询语句,这样在表现层只需将查询变量写入数组并传递给函数就行了,在表现层上看不到SQL了:);不过这样由于查询条件在函数里做判断,也就缺少了灵活性,但只要将所需的全部条件都考虑到,应该还是没什么问题的。
    ----------下面是product.inc.php中的list_product函数 -------------/* 函数 list_products($condition)
    ** 功能 从数据库中获取产品列表
    ** 参数 $condition 条件数组
    */
    function list_products($condition)
    {
    $sql  = "SELECT id, name, provider, cat, introduce, price0, price1, price2, price3, price4, price5, unit, score, url, img
     FROM product ";
    $tmp = "";
    if (!empty($condition['id']))
    $tmp .= (empty($tmp)?"WHERE":"AND")." id = '".$condition['id']."' "; 
    if (!empty($condition['cat']))
    $tmp .= (empty($tmp)?"WHERE":"AND")." cat = '".$condition['cat']."' "; 
    if (!empty($condition['name']))
    $tmp .= (empty($tmp)?"WHERE":"AND")." name LIKE '%".$condition['name']."%' "; 
    if (isset($condition['if_pub']))
    $tmp .= (empty($tmp)?"WHERE":"AND")." if_pub = '".$condition['if_pub']."' "; 
    if (!empty($condition['order_by']))
    $tmp .= "ORDER BY ".$condition['order_by']." DESC ";
    if (isset($condition['start']) && isset($condition['rows']))
       $tmp .= "LIMIT ".$condition['start'].", ".$condition['rows'];
    $sql .= $tmp;
    //echo $sql;
    if ($this->db->query($sql))
    return 1;
    else
    return 0;
    }
      

  5.   

    我是初学者,开发模式还很落后,HTML混合和函数封装,好好向大家学习学习。
      

  6.   

    其实,控制层是可有可无用, 我个人认为主要就是用来传递和整理条件用.
    ------------------------------------------------------------------不大同意楼主这句话(前半句不同意,我认为Controller是必要的,后半句有点不大清楚)我个人认为Controller在MVC模式中的作用就是接收用户的输入,并对其作出反应。
    这在Desktop Application中可以很好实现,而PHP是服务端的语言,有其局限性。
    我想他的作用就是对用户在FORM输入的东西,加载相应的Model,并调用Model中的相应
    Method对用户的输入进行反应。对应着我们平常一般的PHP的MVC开发中就是,Controller把用户输入的提交给ActionForm的Validate方法,接着再把处理的结果提交给Action进行进一步处理(通常,这时候加载的是业务逻辑层)。Action处理完后,Controller再把结果交给Dispatcher。Controller生命结束。
    总的认为,Controller启到了承前启后的作用。
    有不对的地方请指教!
      

  7.   

    cu上有个人发布了一个OOP框架
    大家可以去参考一下