예제 #1
0
 /**
  * http输出。
  * @param array $data 要输出的数据
  * @param string $content_type 输出格式json,xml,plain
  * @todo 既然是static,应该放lib里?
  */
 public static function output($r, $content_type)
 {
     //参考http://cn2.php.net/manual/en/function.header.php
     if ($r['result']['status']['code'] != 200) {
         header('HTTP/1.1 ' . $r['result']['status']['code'] . ' ' . $r['result']['status']['msg']);
         //module
         header('Status: ' . $r['result']['status']['code'] . ' ' . $r['result']['status']['msg']);
         //cgi
     }
     switch ($content_type) {
         case 'application/json':
             header('Content-Type: application/json; charset=UTF-8');
             //google.com用的是UTF-8。没找到标准规定大小写。todo
             if (!isset($r['result']['data']) || !is_array($r['result']['data'])) {
                 $r['result']['data'] = (object) array();
                 //一直输出json对象
             }
             echo StrLib::decodeUnicode(json_encode($r));
             break;
         case 'application/xml':
             header('Content-Type: application/xml; charset=UTF-8');
             //todo array to xml
             break;
         case 'text/plain':
             header('Content-Type: text/plain; charset=UTF-8');
             //todo
             break;
     }
     return true;
 }
예제 #2
0
 public function __construct($category_name, $written_language_tag)
 {
     $language_model = new LanguageModel();
     $this->written_language_id = $language_model->getWrittenLanguageIdByTag($written_language_tag);
     $product_db_class_name = StrLib::underlineToClassName($category_name) . 'Db';
     $product_attribute_value_wlp_db_class_name = StrLib::underlineToClassName($category_name) . 'AttributeValueWlpDb';
     $this->product_db = new $product_db_class_name();
     $this->product_attribute_value_wlp_db = new $product_attribute_value_wlp_db_class_name();
 }
예제 #3
0
 public function __construct()
 {
     if (empty($this->db)) {
         $db_engine = ConfigParserLib::get('db', 'using_db_engine');
         $db_engine_class_name = StrLib::underlineToClassName($db_engine . 'DbEngine');
         $db_server_name = ConfigParserLib::get('db', 'db_engine_to_server_name_map[\'' . $db_engine . '\']');
         $db_config = ConfigParserLib::get('system', 'db_servers[\'' . $db_server_name . '\']');
         $this->db = new $db_engine_class_name($db_config);
     }
 }
예제 #4
0
    }
}
$controller_map = array('categories' => 'category', 'products' => 'product', 'qiniu' => 'qiniu');
try {
    $request_method = $_SERVER['REQUEST_METHOD'];
    $uri = $_SERVER['REQUEST_URI'];
    //比如 /users/1
    $pos = strpos($uri, '?');
    if ($pos !== false) {
        $uri = substr($uri, 0, $pos);
    }
    $uri_array = explode('/', $uri);
    //移除空
    array_shift($uri_array);
    //结果array('users', '1')
    //判断类是否存在
    if (!isset($controller_map[$uri_array[0]])) {
        throw new ControllerException(501);
    }
    $controller_prefix = $controller_map[$uri_array[0]];
    $class_name = StrLib::underlineToClassName($controller_map[$uri_array[0]]) . 'Controller';
    $controller = new $class_name();
    $data = $controller->router($uri);
    $result = array('result' => array('status' => array('code' => 200, 'msg' => ''), 'data' => $data));
    BasicController::output($result, $content_type);
} catch (ControllerException $e) {
    $error = $e->getMessage();
    $data = array('result' => array('status' => json_decode($error, true)));
    BasicController::output($data, $content_type);
}
exit;