15

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

什么格式最适合这些配置文件?

这是我对最佳的量化:

  1. 很容易被 PHP 解析。如果我不必编写任何解析代码,那就太好了,但这不是一个交易破坏者。
  2. 即使有大量条目,仍然很容易被人类阅读
  3. 是一种广泛使用的标准,没有自定义格式
  4. 简洁是值得赞赏的

我开始使用 XML,但由于显而易见的原因很快就放弃了。我想到了 JSON 和 YAML,但想看看还有什么。

4

5 回答 5

19

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

parse_ini_file

于 2009-01-24T23:52:44.763 回答
14

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

它也非常简单和强大

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

于 2009-01-24T23:51:42.410 回答
12

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

好处很明显:

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

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

于 2009-01-24T23:48:11.463 回答
4

另一种选择是使用 JSON 并使用json_encodeand json_decode

您将能够在配置参数中使用更丰富的数据结构。

于 2009-01-25T01:03:24.933 回答
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);
 }
于 2009-01-25T01:09:56.200 回答