checkpara(); $this->aftercheckpara(); $this->action(); $this->display(); } private function checkpara() { $argv = trim(trim($_GET['argv']),'/'); if(empty($argv)) { $this->control_name = 'index'; $this->control_func = 'home'; } else { $array = explode('/', $argv); $this->control_name = $array[0] == '' ? 'index' : $array[0]; $this->control_func = $array[1] == '' ? 'home' : $array[1]; } // 还原GET if(!empty($array)) { unset($_GET['argv']); unset($array[0]); unset($array[1]); $count = count($array); for($i=1;$i<=$count/2;$i++) { $_GET[$array[$i*2]] = $array[$i*2+1]; } } // 如果URI带有常规传参形式,并入$_GET $pos = strpos($_SERVER['REQUEST_URI'], '?'); if($pos!==false) { $new_uri = substr($_SERVER['REQUEST_URI'], $pos+1); $new_uri_arr = explode("&", $new_uri); foreach($new_uri_arr as $v) { $new_para = explode("=", $v); $_GET[$new_para[0]] = $new_para[1]; } } } private function aftercheckpara() { $no_login_list = array('callback', 'tpl', 'api', 'login'); $is_need_login = in_array($this->control_name, $no_login_list) ? false : true; if (!$is_need_login) { // 接口 if ($this->control_name == 'api') { if (empty($_POST['_uid'])) $this->ajax_json(false, '_uid参数不能为空'); if (empty($_POST['_token'])) $this->ajax_json(false, '_token参数不能为空'); if ($_POST['_uid'] != API_PDD_UID) $this->ajax_json(false, '_uid参数值不正确'); if ($_POST['_token'] != API_PDD_TOKEN) $this->ajax_json(false, '_token参数值不正确'); $obj = new mShop(); $shopinfo = $obj->getShopByName($_POST['name']); if (empty($shopinfo)) $this->ajax_json(false, '店铺信息不存在'); if (empty($shopinfo['access_token'])) $this->ajax_json(false, '店铺授权信息不存在'); if (strtotime($shopinfo['expire_time']) < time()) $this->ajax_json(false, '店铺授权已过期,过期时间'.$shopinfo['expire_time']); $this->para['_access_token'] = $shopinfo['access_token']; $this->para['_shopinfo'] = $shopinfo; $this->control_func = '_api_'.$this->control_func; } return true; } $app_uid = $_SESSION['app_uid']; $app_name = $_SESSION['app_name']; if (empty($app_uid) || empty($app_name)) { header('Location:/login'); exit(); } $sobj = new mShop(); $shopinfo = $sobj->getShopByName($app_name); if (empty($shopinfo)) { header('Location:/login'); exit(); } $this->view['_shopinfo'] = $this->para['_shopinfo'] = $shopinfo; $obj = new mOrder(); $this->view['_wait_deliver_count'] = $this->para['_wait_deliver_count'] = $obj->getOrdersCount($shopinfo['uid'], $shopinfo['id'], ORDER_STATUS_WAIT_DELIVER_GOODS, REFUND_STATUS_NO_AFTER_SALES)+0; $this->view['_after_sale_count'] = $this->para['_after_sale_count'] = $obj->getOrdersCount($shopinfo['uid'], $shopinfo['id'], 0, REFUND_STATUS_AFTER_SALE_ING)+0; } private function action() { $control_func = empty($this->control_func) ? 'index' : $this->control_func; // 判断控制层文件是否存在 $control_path = dirname(__FILE__).'/control/'.$this->control_name.'.php'; if(!file_exists($control_path)) { die('class '.$this->control_name.' not exist.'); } include_once ($control_path); // 判断控制层方法是否存在 $obj = new $this->control_name; ##如下根据情况传递公共变量值################## if (is_array($this->para)) { foreach ($this->para as $k=>$v) { $func = 'set' . $k; $obj->$func($v); } } ##如上根据情况传递公共变量值################## if (method_exists($obj, $control_func)) { $res = $obj->$control_func(); } else { die('method '.$this->control_func.' not exist.'); } if($obj->getViewFormat()=='json' && $res===false) { echo urldecode($obj->getError()); exit; } $this->view = array_merge($this->view, $obj->getView()); $this->viewFormat = $obj->getViewFormat(); $this->viewTpl = $obj->getViewTpl(); } private function display() { if($this->viewFormat=='json') { $display = new DisplayJson(); } elseif($this->viewFormat=='string') { $display = new DisplayNone(); } else { $tpl_path = $this->viewTpl=='' ? $this->control_name.'/'.$this->control_func.'.html' : $this->viewTpl; if(!file_exists(dirname(__FILE__) . '/view/templates/'.$tpl_path)) { // 判断模板是否存在 echo dirname(__FILE__) . '/view/templates/'.$tpl_path; die("{$tpl_path} not exist."); } $display = new DisplaySmarty($tpl_path); } $display->setView($this->view); $display->execute(); } } new run();