/** * start router distributing * * @return void */ public static function dispatch() { /* load custom router rules */ self::$custom = Printemps_Config::read("router"); $mode = APP_ENTRY_MODE; switch ($mode) { case 1: $request = $_SERVER['QUERY_STRING']; break; case 2: case 3: isset($_SERVER['PATH_INFO']) ? $request = $_SERVER['PATH_INFO'] : ($request = ''); break; } $request = explode("/", $request); array_splice($request, 0, 1); //remove first element of request array if (isset($request[0]) && !empty($request[0])) { self::$requested['controller'] = isset(self::$custom['class'][$request[0]]) ? self::$custom['class'][$request[0]] : $request[0]; if (isset($request[1]) && !empty($request[1])) { self::$requested['method'] = isset(self::$custom['method'][self::$requested['controller'] . ':' . $request[1]]) ? self::$custom['method'][self::$requested['controller'] . ':' . $request[1]] : $request[1]; /** Write params */ if (isset($request[2]) && $request[2] != '') { for ($i = 2; $i < count($request) - 1; $i += 2) { $name = $request[$i]; $value = isset($request[$i + 1]) ? $request[$i + 1] : ""; Printemps_Config::setGlobal($name, $value); } } } else { self::$requested['method'] = "index"; } } else { self::$requested['controller'] = "index"; self::$requested['method'] = "index"; } self::$requested['fullname'] = self::$requested['controller'] . 'Controller'; /* check if controller doesn't exist */ if (!class_exists(self::$requested['fullname'])) { Printemps_Exception::halt("Requested Controller : " . self::$requested['fullname'] . " doesn't exist."); } $called = new ReflectionClass(self::$requested['fullname']); //create a ReflectionClass $called = $called->newInstance(); //Instance a ReflectionClass /* check if method doesn't exist */ if (!method_exists($called, self::$requested['method'])) { Printemps_Exception::halt("Requested Method : " . self::$requested['method'] . "() doesn't exist."); } call_user_func(array($called, self::$requested['method'])); //Call requested method }
/** * connect to a new mysql server * * @param array $config config content * @param bool $replace whether to replace current default connection * @return void */ public function connect($config, $replace = true) { $this->config = $config; //save config file for further using if (!isset($config['method'])) { Printemps_Exception::halt("Database connect method has not been set."); } switch ($config['method']) { case "pdo": $strings = "mysql:host=" . $config['host'] . ";dbname=" . $config['name']; $user = $config['user']; $password = $config['password']; try { $database = new PDO($strings, $user, $password); } catch (Exception $e) { Printemps_Exception::halt("Failed connect to database through PDO Driver."); } $database->query("SET NAMES " . $config['encode']); $this->pushme($database, $replace); break; case "mysqli": $database = new mysqli($config['host'], $config['user'], $config['password'], $config['name'], $config['port']); $database->query("SET NAMES " . $config['encode']); $this->pushme($database, $replace); break; case "mysql": $database = mysql_connect($config['host'] . ':' . $config['port'], $config['user'], $config['password']); mysql_select_db($config['name'], $database); mysql_query("SET NAMES " . $config['encode'], $database); $this->pushme($database, $replace); break; } }
function autoload_subfunc($class) { /** try to load Printemps key classes, these will have a prefix of `Printemps_` */ if (preg_match("/^(Printemps_).*?/", $class)) { $class = str_replace("Printemps_", "", $class); $pathfile = APP_DEPENDENCE . 'printemps/' . $class . '.php'; } else { if (preg_match("/.*?(Controller)\$/", $class)) { if (file_exists(APP_DEPENDENCE . 'controller/' . $class . '.php')) { $pathfile = APP_DEPENDENCE . 'controller/' . $class . '.php'; } else { Printemps_Exception::halt("Can't find controller file {$class}.php - does it really exist?"); } } else { if (preg_match("/.*?(Model)\$/", $class)) { if (file_exists(APP_DEPENDENCE . 'model/' . $class . '.php')) { $pathfile = APP_DEPENDENCE . 'model/' . $class . '.php'; } else { Printemps_Exception::halt("Can't find model file {$class}.php - does it really exist?"); } } else { if (file_exists(APP_DEPENDENCE . 'extension/' . $class . '.php')) { $pathfile = APP_DEPENDENCE . 'extension/' . $class . '.php'; } else { Printemps_Exception::halt("Can't find class file {$class}.php although we have tried our best."); } } } } require_once $pathfile; }