/** * 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; }
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(); }
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); } }
} } $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;