Путей решения тут может быть множество (
Я хочу предложить на Ваш суд небольшой класс для создания конфигурации на основе INI-файлов. Сразу скажу, что основная "соль" класса заключается в php-функции
/** * Класс конфигуратора * * Класс предназначен для доступа к конфигурации проекта, * хранящейся в формате INI */ class CSlConfig implements ArrayAccess { /** * Ссылка на экземпляр класса * @var object */ private static $_oInstance; /** * Путь к файлу конфигурации * @var string */ private static $_sPathToConfig; /** * Конфигурация проекта * @var array */ private $_aConfig = array(); /** * Конструктор * * @throws INVALID_CONFIG_FILE * @return CSlConfig */ private function __construct() { if( !empty( self::$_sPathToConfig ) && file_exists( self::$_sPathToConfig ) ) $this->_aConfig = parse_ini_file( self::$_sPathToConfig, true ); else throw new Exception( 'INVALID_CONFIG_FILE' ); } /** * Получение экземпляра класса * * @return CSlConfig */ public static function GetInstance() { if( null === self::$_oInstance ) self::$_oInstance = new self(); return self::$_oInstance; } /** * Инициализация конфигуратора * * @param string $sFileName Файл конфигурации * @throws INVALID_CONFIG_FILE * @return CSlConfig */ public static function SetUp( $sFileName ) { if( empty( self::$_sPathToConfig ) ) self::$_sPathToConfig = $sFileName; else throw new Exception( 'CONFIG_FILE_CANT_BE_REDECLARED' ); } /** * Установка элемента массива * * @param integer $iOffset Смещение элемента * @param mixed $mValue Значение элемента * @throws CONFIG_CANT_BE_CHANGED */ public function OffsetSet( $iOffset, $mValue ) { throw new Exception( 'CONFIG_CANT_BE_CHANGED' ); } /** * Проверка существования элемента массива * * @param integer $iOffset Смещение элемента * @return bool */ public function OffsetExists( $iOffset ) { return isset( $this->_aConfig[ $iOffset ] ); } /** * Удаление элемента массива * * @param integer $iOffset Смещение элемента */ public function OffsetUnset( $iOffset ) { unset( $this->_aConfig[ $iOffset ] ); } /** * Получение элемента массива * * @param integer $iOffset Смещение элемента * @return mixed */ public function OffsetGet( $iOffset ) { return isset( $this->_aConfig[ $iOffset ] ) ? $this->_aConfig[ $iOffset ] : null; } } // Конец класса CSlConfig |
С помощью этого класса работа с INI-файлом
; This is a sample configuration file ; Comments start with ';', as in php.ini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = "/usr/local/bin" URL = "http://www.example.com/~username" [third_section] phpversion[] = "5.0" phpversion[] = "5.1" phpversion[] = "5.2" phpversion[] = "5.3" |
будет выглядеть следующим образом:
// Подключение класса require_once( dirname( __FILE__ ) . '/config.php' ); // Настройка конфигуратора (это будет где-нибудь в php_interface/init.php) CSlConfig::SetUp( 'config.ini' ); // Работа с конфигом (это будет в любом месте нашего кода) $oConfig = CSlConfig::GetInstance(); var_dump( $oConfig['first_section'] ); var_dump( $oConfig['third_section']['phpversion'] ); |
Вот как-то так