我正在用PHP创建一个框架,并需要几个配置文件。其中一些文件将不可避免地有大量的条目。
哪种格式对于这些配置文件最好?
以下是我的最佳量化标准:
- 由PHP轻松解析。如果我不必编写任何解析代码,那将很好,但这不是必须的。
- 即使有大量的条目,人们仍然可以轻松地阅读
- 是广泛使用的标准格式,没有自定义格式
- 简洁性被赞赏
我最初使用XML,但很快放弃了明显的原因。我考虑过JSON和YAML,但想看看还有什么其他选择。
我正在用PHP创建一个框架,并需要几个配置文件。其中一些文件将不可避免地有大量的条目。
哪种格式对于这些配置文件最好?
以下是我的最佳量化标准:
我最初使用XML,但很快放弃了明显的原因。我考虑过JSON和YAML,但想看看还有什么其他选择。
INI文件格式怎么样?它是事实上的配置文件标准,并且PHP内置了解析该格式的解析器:
为什么不使用PHP文件来配置?
好处很明显:
其他框架(如Django和Rails)使用脚本形式的配置文件。
json_encode
和json_decode
。您将能够在配置参数中使用更丰富的数据结构。个人而言,我喜欢在类中处理配置数据。
class appNameConfig {
var $dbHost = 'localhost';
var $dbUser = 'root';
//...
}
然后使用它们的所有操作只需要做到
$config = new appNameConfig;
mysql_connect($config->dbHost, $config->dbUser, $config->dbPassword) or die(/*...*/);
要更改配置,您只需使用包含类的文件读取该文件即可。我使用以下函数:
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);
}