setFile("index.conf"); * $config->getValue("atualizacoes"); * $array = $config->getKeys(); * for ($i = 1; $i <= count($array); $i++) * { * echo $i . " de " . count($array) . " : " . $array[$i] . "
"; * } * $config = null * */ class configreader { private $file; private $comment = "#"; private $keys; private $array; /** *Inicia a classe, recebendo como parametro opcional o nome do arquivo, * se nao for passado aqui, passe em setFile o valor... * @param nome fisico do arquivo que sera lido */ public function configreader($file_to_read = "") { $this->file = $file_to_read; $this->refresh(); } /** *Retorno o nome do arquivo passado como parametro e que esta sendo lido * @return */ public function getFile() { return $this->file; } /** *Define o arquivo que sera lido pela classe * @param nome do arquivo */ public function setFile($file_to_read) { $this->file = $file_to_read; $this->refresh(); } /** *Funcao interna que executa o parse do arquivo de configuracao, * veja que as chaves e valores sao tratados com trim, seu retorno * eh especifico com o tratamento de espacos * @return */ private function refresh() { $this->array = null; $this->keys = null; if (!file_exists($this->file)) { return; } if (filesize($this->file) == 0) { return; } $fp = fopen($this->file, "r"); while (!feof($fp)) { $line = trim(fgets($fp)); if ($line && !ereg("^$this->comment", $line)) { $pieces = explode("=", $line); $option = trim($pieces[0]); $value = trim($pieces[1]); $this->keys[count($this->keys)+1] = $option; $this->array[$option] = $value; } } fclose($fp); } /** *Retorna o valor de uma das chaves com base no nome da chave * @param $config_key_name - nome da chave, use getKeys para navegar em todas * @return */ public function getValue($config_key_name) { return $this->array[$config_key_name]; } /** * Retorna um array (baseado no index 1) com todas as chaves que foram carregadas, * com a combinacao do array retornado mais getValue voce navega por todas as chaves * @return */ public function getKeys() { return $this->keys; } }