configFile = $filename; } elseif (is_readable($filepath)) { $this->configFile = $filepath; $this->merge(new Zend_Config_Ini($filepath)); } else { throw new NotReadableError( 'Cannot read config file "%s". Permission denied', $filename ); } } /** * Retrieve a application config instance * * @param string $configname The configuration name (without ini suffix) to read and return * @param bool $fromDisk When set true, the configuration will be read from the disk, even * if it already has been read * * @return Config The configuration object that has been requested */ public static function app($configname = 'config', $fromDisk = false) { if (!isset(self::$app[$configname]) || $fromDisk) { self::$app[$configname] = new Config(self::resolvePath($configname . '.ini')); } return self::$app[$configname]; } /** * Retrieve a module config instance * * @param string $modulename The name of the module to look for configurations * @param string $configname The configuration name (without ini suffix) to read and return * @param string $fromDisk Whether to read the configuration from disk * * @return Config The configuration object that has been requested */ public static function module($modulename, $configname = 'config', $fromDisk = false) { if (!isset(self::$modules[$modulename])) { self::$modules[$modulename] = array(); } $moduleConfigs = self::$modules[$modulename]; if (!isset($moduleConfigs[$configname]) || $fromDisk) { $moduleConfigs[$configname] = new Config( self::resolvePath('modules/' . $modulename . '/' . $configname . '.ini') ); } return $moduleConfigs[$configname]; } /** * Retrieve names of accessible sections or properties * * @param $name * @return array */ public function keys($name = null) { if ($name === null) { return array_keys($this->toArray()); } elseif ($this->$name === null) { return array(); } else { return array_keys($this->$name->toArray()); } } /** * Return the application wide config file * * @return string */ public function getConfigFile() { return $this->configFile; } /** * Prepend configuration base dir if input is relative * * @param string $path Input path * @return string Absolute path */ public static function resolvePath($path) { return self::$configDir . DIRECTORY_SEPARATOR . ltrim($path, DIRECTORY_SEPARATOR); } }