<?php require_once (__DIR__ . '/../anyem.utils/IAnyemConfigReader.php'); /** * Description of AnyemConfigReader * * @author Anis.Halayem */ class AnyemConfigReaderImpl implements IAnyemConfigReader { private $_config_a = array (); public function __construct($file) { $this->loadConfig($file); } private function loadConfig ($file) { $cfg_line_s = '' ; if (!is_file($file)) { throw new Exception(sprintf("can not find this file: %s", $file)); } $f_cfg = fopen ($file, 'r') ; if (!$f_cfg) { throw new Exception($file); } while ( $cfg_line_s = fgets ($f_cfg)) { if ( ( (strpos (trim ($cfg_line_s), self::CFG_COMMENT) !== FALSE) && (strpos (trim ($cfg_line_s), self::CFG_COMMENT) == 0) ) || (strlen (trim ($cfg_line_s)) == 0) ) { // donc c'est une ligne commentaire continue ; } $tokens_a = explode (self::CFG_DELIMITER, $cfg_line_s); if ($tokens_a === FALSE) { continue ; } $this->_config_a[trim ($tokens_a[0])] = trim ($tokens_a[1]) ; if (count ($tokens_a) > 2) { $this->continueReading($tokens_a[0], $tokens_a); } } } public function readConfig ($param, $default = NULL) { if (!isset($this->_config_a[$param])) { return $default; } else { return $this->_config_a[$param] ; } } private function continueReading ($param, $tokens_a) { for ($i = 2 ; $i < count ($tokens_a) ; $i++) { $this->_config_a[trim ($param )] += self::CFG_DELIMITER + trim ($tokens_a[i]); } } } |