我创建一个框架,在PHP和需要有一些配置文件。这些文件将不可避免地有大量的项目。

什么样的格式将是最适合这些配置文件?

这是我的定量化的最好的:

  1. 很容易分析PHP.这将是好的,如果我没有写任何分析代码但是,这不是一个处理器。
  2. 仍然容易地读通过人类甚至在有大量的项目
  3. 是一个广泛使用的标准,没有定义的格式
  4. 简洁是理解

我开始使用XML,但是很快放弃了对于明显的原因。我已经想象和其,但希望看到什么了。

有帮助吗?

解决方案

如何大约一个INI文件格式?这是一个事实上的配置文件的标准,并PHP有一个内置的分析器,这一格式:

parse_ini_file

其他提示

其一个好的选择:http://www.yaml.org/

这是非常简单的和强大的,太

红宝石项目使用这一很大的结构。

你为什么不使用PHP文件的配置?

好处是明确的:

  • 可能出现的错误将得到自动抓住了
  • 没有必要使用/创建一个自定义的分析器
  • 其广泛理解为由PHP程序员
  • 你可以有一些自定义的逻辑,例如使用定制的配置用于发展,其他人为生产,等等

其他框架喜欢Django和轨道使用配置文件,该文件是一个剧本。

另一个选择是使用JSON和使用 json_encodejson_decode.

你将能够使用更加丰富的数据结构中的配参数。

Personly我喜欢做的配置数据中的一类。

class appNameConfig {
    var $dbHost = 'localhost';
    var $dbUser = 'root';
    //...
 }

然后使用他们所有你需要做的就是

$config = new appNameConfig;
mysql_connect($config->dbHost, $config->dbUser, $config->dbPassword) or die(/*...*/);

改变config你所要做的就是读取文件的类在这我用一个功能是这样的:

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);
 }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top