public static function init($pConfigFile = null, $pRootPath = null) { if (isset($_COOKIE['kiss_debug']) && 1 == $_COOKIE['kiss_debug']) { self::$_mode = "debug"; } if (is_null($pConfigFile)) { $pConfigFile = realpath(dirname($_SERVER['SCRIPT_FILENAME']) . '/config.xml'); } if (is_null($pRootPath)) { $pRootPath = realpath(dirname($_SERVER['SCRIPT_FILENAME'])); } $registry =& KISS_Framework_Registry::instance(); if (file_exists(dirname(__FILE__) . "/config.xml")) { $default_config = simplexml_load_file(dirname(__FILE__) . "/config.xml"); $registry->setEntry('default', $default_config); } $registry->setEntry('root_path', $pRootPath); if (!empty($pConfigFile)) { if (!file_exists($pConfigFile)) { die('没有找到配置文件:' . $pConfigFile); } $user_config = simplexml_load_file($pConfigFile); foreach ($user_config->attributes() as $key => $value) { if (property_exists('KISS_Application', $key)) { KISS_Application::${$key} = $value; } } $registry->setEntry('user_defined', $user_config); $db_configs = array(); $db_count = 0; foreach ($user_config->databases->database as $database) { $db_configs[$db_count] = array('DatabaseType' => (string) $database['type'], 'DatabaseHost' => (string) $database['host'], 'DatabaseUsername' => (string) $database['username'], 'DatabasePassword' => (string) $database['password'], 'DatabaseName' => (string) $database['database'], 'DatabasePort' => (int) $database['port']); if (isset($database['name'])) { $db_configs[$db_count]['name'] = (string) $database['name']; $db_configs[(string) $database['name']] =& $db_configs[$db_count]; } $db_count++; } $registry->setEntry('database_connections', $db_configs); } KISS::addIncludePath(self::getSystemPath('class')); $key = APP_NAME . 'config_ini_array'; if (KISS::enableCache() && apc_exists($key)) { self::$_config_ini_array = apc_fetch($key); } else { $config_ini = self::getSystemPath('root') . '/config.ini'; if (file_exists($config_ini)) { self::$_config_ini_array = parse_ini_file($config_ini, true); if (KISS::enableCache()) { apc_store($key, self::$_config_ini_array); } } } $annotation_file = realpath(KISS_Framework_Config::getSystemPath('root') . '/annotation.serialize'); if (file_exists($annotation_file)) { self::$annotation = unserialize(file_get_contents($annotation_file)); } }
public static function addIncludePath($path) { $path_array = explode(PATH_SEPARATOR, ini_get('include_path')); array_unshift($path_array, $path); ini_set('include_path', implode(PATH_SEPARATOR, array_unique($path_array))); } /** * 框架入口函数 * * @return void */ public function serve() { try { new KISS_Controller(); } catch (Exception $e) { var_dump($e); $page = new KISS_Page(); $page->showMessage($e->getMessage()); } } } if (!defined('APP_NAME')) { $call_stack = debug_backtrace(); define('APP_NAME', md5($call_stack[0]['file'])); } assert(!function_exists('__autoload')); date_default_timezone_set('PRC'); KISS::addIncludePath(realpath(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..')); KISS::addIncludePath(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Compatible'); spl_autoload_register(array('KISS', 'autoload'));