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;
}
}