-----------php开发模式----------大搜索 http://blog.mvpcn.net/chagel/archive/2004/03/24/536.aspxhttp://blog.mvpcn.net/chagel/archive/2004/04/06/711.aspx 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 正立志于 用ASP 实现mvc 基本框架已经实现,有空讨论一下 我用自己的一套mvc架构,教复杂. 我用的是smarty了,类似于MVC模式,除了C以外,其它的都用类来实现!一两句说不清,有空交流交流了!:) 我的模式以前贴过,有些还有待于修改!系统结构|-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; } 我是初学者,开发模式还很落后,HTML混合和函数封装,好好向大家学习学习。 其实,控制层是可有可无用, 我个人认为主要就是用来传递和整理条件用.------------------------------------------------------------------不大同意楼主这句话(前半句不同意,我认为Controller是必要的,后半句有点不大清楚)我个人认为Controller在MVC模式中的作用就是接收用户的输入,并对其作出反应。这在Desktop Application中可以很好实现,而PHP是服务端的语言,有其局限性。我想他的作用就是对用户在FORM输入的东西,加载相应的Model,并调用Model中的相应Method对用户的输入进行反应。对应着我们平常一般的PHP的MVC开发中就是,Controller把用户输入的提交给ActionForm的Validate方法,接着再把处理的结果提交给Action进行进一步处理(通常,这时候加载的是业务逻辑层)。Action处理完后,Controller再把结果交给Dispatcher。Controller生命结束。总的认为,Controller启到了承前启后的作用。有不对的地方请指教! cu上有个人发布了一个OOP框架大家可以去参考一下 php数组的统计 关于Linux系统与Windows系统下使用php程序中的字符转义问题 xampp 虚拟目录的配置 微博的关注系统. 关于webservice得不到值,小弟求帮助 php语句操作临时表的问题,在线等 求助:flash上传文件,用PHP存储到MYSQL数据库,无法成功!(急!) ★★求购办公自动化软件★★ :)我想问下有关PHP的问题,是运行环境方面的 LINUX下的ASP和PHP3爱好者共同的问题?? 如何计算中英文字符总数 在一个输入框输入信息后如何把javascript语句去掉,但不去掉别的html语句
|-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;
}
------------------------------------------------------------------不大同意楼主这句话(前半句不同意,我认为Controller是必要的,后半句有点不大清楚)我个人认为Controller在MVC模式中的作用就是接收用户的输入,并对其作出反应。
这在Desktop Application中可以很好实现,而PHP是服务端的语言,有其局限性。
我想他的作用就是对用户在FORM输入的东西,加载相应的Model,并调用Model中的相应
Method对用户的输入进行反应。对应着我们平常一般的PHP的MVC开发中就是,Controller把用户输入的提交给ActionForm的Validate方法,接着再把处理的结果提交给Action进行进一步处理(通常,这时候加载的是业务逻辑层)。Action处理完后,Controller再把结果交给Dispatcher。Controller生命结束。
总的认为,Controller启到了承前启后的作用。
有不对的地方请指教!
大家可以去参考一下