什么是配置文件的最佳文件格式

时间:2009-01-24 23:42:45

标签: php configuration file-format

我在PHP中创建一个框架,需要一些配置文件。其中一些文件不可避免地会有大量条目。

这些配置文件最适合哪种格式?

以下是我对最佳状态的量化:

  1. 通过PHP轻松解析。如果我不必编写任何解析代码,那将是很好的,但这不是一个交易破坏者。
  2. 即使有大量条目,人们也很容易阅读
  3. 是一种广泛使用的标准,没有自定义格式
  4. 赞赏简洁
  5. 我开始使用XML,但很快就放弃了明显的原因。我已经想到了JSON和YAML,但想看看还有什么。

5 个答案:

答案 0 :(得分:20)

INI文件格式怎么样?它是事实上的配置文件标准,PHP有一个内置的解析器用于该格式:

parse_ini_file

答案 1 :(得分:14)

YAML是个不错的选择: http://www.yaml.org/

它也非常简单和强大

Ruby项目大量使用它进行配置。

答案 2 :(得分:12)

为什么不使用PHP文件进行配置?

好处很明显:

  • 可能会自动捕获错误
  • 无需使用/创建自定义解析器
  • PHP程序员广泛理解
  • 您可以拥有一些自定义逻辑,例如使用自定义配置进行开发,其他用于生产等

Django和rails等其他框架使用配置文件,这是一个脚本。

答案 3 :(得分:4)

另一种选择是使用JSON并使用json_encodejson_decode

您可以在配置参数中使用更丰富的数据结构。

答案 4 :(得分:1)

我个人喜欢在课堂上配置数据。

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);
 }