Pergunta

Estou criando um quadro em PHP e precisa ter alguns arquivos de configuração. Alguns desses arquivos vai inevitavelmente ter um grande número de entradas.

O formato seria o melhor para esses arquivos de configuração?

Aqui está o meu quantificação de melhor:

  1. facilmente analisado pelo PHP. Seria bom se eu não tenho que escrever qualquer código de análise, mas este não é um bom negócio.
  2. Permanece facilmente lido por seres humanos, mesmo quando há uma grande quantidade de entradas
  3. É um padrão amplamente usado, há formatos personalizados
  4. concisão é apreciado

Eu comecei usando XML, mas rapidamente desistiu por razões óbvias. Pensei em JSON e YAML mas queria ver o que mais está lá fora.

Foi útil?

Solução

Como cerca de um formato de arquivo INI? É um padrão de arquivo de facto configuração e PHP tem um built-in analisador para esse formato:

parse_ini_file

Outras dicas

YAML é uma boa opção: http://www.yaml.org/

É muito simples e poderoso, também

projetos Ruby usá-lo muito para a configuração.

Por que você não usar um arquivo PHP para a configuração?

Os benefícios são claros:

  • possíveis erros será pego automaticamente
  • Não é preciso usar / criar um analisador personalizado
  • IT'S amplamente entendida por programadores PHP
  • você pode ter alguma lógica personalizada, por exemplo, usando configurações personalizadas para o desenvolvimento, outros para a produção, etc

Outros frameworks como Django e Rails usar um arquivo de configuração que é um script.

Outra opção seria usar JSON e uso json_encode e json_decode.

Você seria capaz de usar estruturas de dados mais ricos em seus parâmetros de configuração.

personly eu gosto de fazer de dados de configuração em uma classe.

class appNameConfig {
    var $dbHost = 'localhost';
    var $dbUser = 'root';
    //...
 }

, em seguida, usá-los tudo que você tem a fazer é

$config = new appNameConfig;
mysql_connect($config->dbHost, $config->dbUser, $config->dbPassword) or die(/*...*/);

para alterar a configuração tudo que você tem a fazer é ler o arquivo com a classe em que eu uso uma função como esta:

function updateConfig($parameter, $value) {
    $fh = fopen('config.php', 'w+');
    while(!feof($fh)) {
        $file .= fgets($fh);
     }
    $fileLines = explode("\n", $file);
    for($i=0;$i<count($fileLines);$i++) {
        if(strstr($fileLines[$i], $parameter)) {
            $fileLines[$i] = "$" . $parameter . " = '" . $value . "'";
         }
     }
    $file = implode("\n", $fileLines);
    fwrite($fh, $file);
    fclose($fh);
 }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top