我正在用 PHP 创建一个框架,需要一些配置文件。其中一些文件不可避免地会有大量条目。
什么格式最适合这些配置文件?
这是我对最佳的量化:
- 很容易被 PHP 解析。如果我不必编写任何解析代码,那就太好了,但这不是一个交易破坏者。
- 即使有大量条目,仍然很容易被人类阅读
- 是一种广泛使用的标准,没有自定义格式
- 简洁是值得赞赏的
我开始使用 XML,但由于显而易见的原因很快就放弃了。我想到了 JSON 和 YAML,但想看看还有什么。
我正在用 PHP 创建一个框架,需要一些配置文件。其中一些文件不可避免地会有大量条目。
什么格式最适合这些配置文件?
这是我对最佳的量化:
我开始使用 XML,但由于显而易见的原因很快就放弃了。我想到了 JSON 和 YAML,但想看看还有什么。
INI 文件格式怎么样?这是一个事实上的配置文件标准,PHP 有一个针对该格式的内置解析器:
为什么不使用 PHP 文件进行配置?
好处很明显:
其他框架,如 Django 和 rails 使用配置文件,它是一个脚本。
另一种选择是使用 JSON 并使用json_encode
and 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);
}