最新消息: 新版网站上线了!!!

yuncart添加模型和入口方式介绍

index.php ,//前台的入口
admin.php,//后台的入口
api.php,//api的入口
三个文件大同小异,都是通过参数model和action来判断执行哪个功能
 
比如index.php?model=listing&action=index就是前台访问类别的页面
ps:自所以这么安排,原本是打算按照MVC的架构来写yuncart,只是为了开发的方便,就没考虑那么多。比如DB访问都是$GLOBALS['db']这种,后续的开发会向MVC的方向来靠。DB也会采用DAO的形式,加入对多种数据库的支持。而不是现在的组装sql的方式。
 
 
下面以index.php为例,
 
1 define("IN_CART",        true);//进入yuncart执行
2 define("SITEPATH",        dirname(__FILE__));//网站根目录
3
4 $stage = "front";//表示前台
5 require_once SITEPATH."/init.php";//公用文件,三个文件都加载这个文件,
6
7 //获取model,action
8 $model  = isset($_REQUEST['model'])?trim($_REQUEST["model"]):'front';//判断model
9  $action = isset($_REQUEST['action'])?trim($_REQUEST["action"]):'index';//判断action
10
11 if(!in_array($model,array("buy","cart","favor","content","front","member","item","myservice","myaddress","mytrade","order","user","listing","search","meal","coupon","mycoupon","aftersale","payment"))) {//判断model的正确性
12  $model = "front";
13  $action = "index";
14  }
15
16  //商品短地址,
17
18  //前台独有的,eg demo.yuncart.com/?22这种网址,可以直接定向到
19
20  // index.php?model=item&action=index&itemid=22
21  if(!isset($_REQUEST['model']) && !empty($_GET)) {
22  $gets = $_GET;
23  if(count($gets) == 1 && is_numeric(key($gets))    ) {
24  $model = "item";
25  $action = "index";
26  $_GET["itemid"] = key($gets);
27  }
28  }
29
30  //执行程序
31  if(file_exists(STAGEPATH."/{$model}.class.php")) {//判断model是否存在
32  $classname = ucfirst($model);//把model第一个字母大写
33  $class = new $classname($model,$action);//加载相关类
34  if(method_exists($class,$action)) {
35
36  //如果model中存在相应的action方法,执行该方法,否则直接exit,这块应该提示404错
37
38  //误的
39  $class->$action();
40  }
41  exit();
42  }
 

转载请注明:谷谷点程序 » yuncart添加模型和入口方式介绍