ODG FileManager - PHP

Essa é uma simples biblioteca para manipular arquivos de configurações
CSV,Properties,Env etc...

Instalação

1º Baixe o repositório para o seu projeto.
2º Insira o código a baixo.

require_once("./vendor/FileManager_PHP/src/autoload.php");

use FileConfiguration\PropertiesConfiguration;
use FileManipulation\Exceptions\FileManipulationExceptions;

3º Não requer composer.

Exemplos

Properties e Env:

...

try {

  $Config = new PropertiesConfiguration("./server.properties");

} catch (FileManipulationExceptions $e) {

}

Properties Exemplo:
snooper-enabled=false
level-type=DEFAULT
hardcore=false
enable-command-block=true
max-players=1070
network-compression-threshold=1030

Get and Setters Configurações:
...

$max  = $Config->getValue("max-players"); // Resgata uma configuração
$Config->setValue("max-players", $max + 1); // Define uma nova configuração

$Config->saveConfig(); // Salva as modificações feitas no arquivo

reload Config:
...
$Config->loadConfig();

(As alterações feitas não salvas são perdidas é substituídas)


Salva as Modificações:
$file->saveConfig(); // Salva no arquivo atual
$file->saveConfig("./Properties/EnvFile.env"); // Salva em um novo arquivo

Load $_ENV e getenv():
$Config->loadEnv();

$max = $_ENV['max-players'];
$max = getenv("max-players");

CSV Files:

...

try {

  $file = new CSVConfiguration("./CSV/Exemplos.csv");

} catch (FileManipulationExceptions $e) {


}
Default:
/**
 * @param string $fileLocation Local do Arquivo
 * @param boolean $useHeader Se verdadeiro a primeira linha do arquivo sera pulada e usada como indice
 * @param string $delimitador Deve ser definido com o delimitador do arquivo
 *    caso seja "auto" ou null ele irar procurar um automaticamente
 * @param int $startLine Informe em qual linha o arquivo deve começar a leitura
 *    Se o valor for menor que zero ele contara do final para baixo
 * @param int $limitLine numero maximo de linhas que devem ser lidas
 */
new CSVConfiguration("./CSV/Exemplos.csv", true, "auto", 0, null, true);

(Instancia padrão da classe) - Configure como preferir


CSV Exemplo:
id,nome,telefone,email
10,DragonsGamers,(31) 90000-0000,contato@Dragons.com
11,Larissa Silveira,(31) 90000-0001,contato@larissa.com
12,Renato Oliveira,(31) 90000-0002,contato@renato.com
13,Diogo Nominato,(31) 90000-0003,contato@diogo.com
14,Lais Teixeira,(31) 90000-0004,contato@lais.com
15,Brena Coelho,(31) 90000-0005,contato@manu.com
16,Sabrina Almeida,(31) 90000-0006,contato@sa.com
17,Danilo Castro Reis,(31) 90000-0007,contato@danilo.com
18,Gabriel Salome,(31) 90000-0007,contato@solome.com
,,,

Rode as configurações:
...

while ($reg = $file->getData()) {

}

  • Valor Recebido por $reg no While():
// se useHeader for Abilitado
[
  "id"       => "14",
  "nome"     => "Lais Teixeira",
  "telefone" => "(31) 90000-0004",
  "email"    => "contato@Dragons.com"
];
// Caso o useHeader estiver desabilitado
[
     0       => "14",
     1       => "Lais Teixeira",
     2       => "(31) 90000-0004",
     3       => "contato@lais.com"
];

OBS: se o useHeader for desabilitado ele não ira pular a primeira linha então o primeiro registro seria (id,nome,telefone,email);


Get and Setters Configurações:
while ($reg = $file->getData()) {

  if($file->getValue("0") == $file->getValue("id")){
    $file->setValue("1",    "Heloisa"); // userHeader true or false
    $file->setValue("nome", "Heloisa"); // if UseHeader == true
    return true; // Condição verdadeira
  }

}

Não use: $reg['nome'] = "Heloisa";
Recupere uma configuração pelo nome ou indice


Salva as Modificações:
$file->saveConfig(); // Salva no arquivo atual
$file->saveConfig("./CSV/NewCSV.csv"); // Salva em um novo arquivo

Pula para uma linha especifica:
$reg = $file->setData(5); // Começa na 5º posição
$reg = $file->backData(); // Volta 1 posição atraz
$reg = $file->resetData(); // Volta para a primeira posição
$reg = $file->endData(); // Vai para a ultima posição

Se o userHeader for verdadeiro retornara o usuario ID 15, se não resgatara o id 14


get header:
$header = $file->getHeader();
// EXEMPLO
[
  0 => 'id',
  1 => 'nome',
  2 => 'telefone',
  3 => 'email'
];

Se o useHeader for falso retornara nulo (null);


Manipular arquivos:
$file->setDelimitador(","); // Muda o Delimitador do Arquivo
$file->setStartLine(-5); // Começara no usario de ID 15
$file->setLimitLine(2); // Limite de usuarios carregados

Requer: $file->loadConfig(); para recarregar as posições.
Requer: $file->saveConfig(); para atualizar o delimitador.


Recarrega as Configurações:
$file->loadConfig(); // Limpa as modificações feitas

Todas as modificações não salvas são perdidas;

Tratando Erros:

 catch (FileManipulationExceptions $e) {
  switch ($e->getCode()) {
    case '1': // O Local do arquivo é nulo
    case '2': // O Arquivo não existe
    case '3': // O Item informado nao e um arquivo
    case '4': // O arquivo não pode ser lido (SEM PERMISSÃO)
    case '5': // SYNTAX ERROR FILE
    case '6': // O arquivo não pode ser Alterado ou Criado
    case '7': // StartLine CSV Invalido
    case '8': // Limit de Linhas Invalidos CSV
      echo $e->getMessage();
      break;
  }
}

Codigos

  1. O Arquivo e Null (Nulo)
  2. O Arquivo não existe, corrija com:
   /**
   * @param string $fileLocation File Location: C:/Web/config.env
   * @param boolean $SyntaxErrorReport Se for verdadeiro ele ira lançar
   * uma exceção caso uma linha não seja valida
   * @param boolean $createFile Se for verdadeiro a classe ira criar o arquivo
   * caso ele não exista, se não for possivel cria-lo lançara uma exceção
   */
  new PropertiesConfiguration("server.properties", true, true /*DEFINA TRUE*/);

  // OR

  /**
   * @param string $fileLocation Local do Arquivo
   * @param boolean $useHeader Se verdadeiro a primeira linha do arquivo sera pulada e usada como indice
   * @param string $delimitador Deve ser definido com o delimitador do arquivo
   *    caso seja "auto" ou null ele irar procurar um automaticamente
   * @param int $startLine Informe em qual linha o arquivo deve começar a leitura
   *    Se o valor for menor que zero ele contara do final para baixo
   * @param int $limitLine numero maximo de linhas que devem ser lidas
   * @param boolean $createFile Se for definido verdadeiro caso o arquivo informado não exista ele e criado
   */
  new CSVConfiguration("./CSV/Exemplos.csv", true, "auto", 0, null, true /*DEFINA TRUE*/);
  1. Não é um nome de um arquivo - (VAZIO ou PASTA),
  2. Não é possivel ler o arquivo - (SEM PERMISSÕES)
  3. Erro de syntax e reportado se for encontrado em alguma linha, Desabilite com:
   /**
   * @param string $fileLocation File Location: C:/Web/config.env
   * @param boolean $SyntaxErrorReport Se for verdadeiro ele ira lançar
   * uma exceção caso uma linha não seja valida
   */
  new PropertiesConfiguration("server.properties", false);
  1. Arquivo não pode ser criado ou editado, Exeção lançada se createFile for verdadeiro ou quando for chamada saveConfig();
...

try {

  $Config->saveConfig();
  // or
  $Config->saveConfig("./newlocation.tmp");

} catch (FileManipulationExceptions $e) {
  echo $e->getMessage();
}
  1. O Valor Informado não é um numero.
  2. O Valor Informado não é um numero ou é Menor ou igual a Zero