PHP完全自学手册(珍藏版) 中文pdf扫描版下载
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添加模型和入口方式介绍