Пример #1
0
 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));
     }
 }