O que é é o melhor formato de arquivo para arquivos de configuração
-
20-08-2019 - |
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:
- 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.
- Permanece facilmente lido por seres humanos, mesmo quando há uma grande quantidade de entradas
- É um padrão amplamente usado, há formatos personalizados
- 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.
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:
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);
}