2

- 背景 -

因此,我正在为本地开发机器及其安装 wordpress 的安装程序脚本工作,我想做的是拥有它,以便用户从下拉框中选择特定的插件,然后从那里选择哪个版本他们想安装。

- 问题 -

所以我需要能够解析 .cfg 文件并将所有值动态存储到变量中,这样如果我们添加更多插件就不会中断。我该怎么做呢?

4

2 回答 2

3

几种方法,取决于您希望如何存储配置数据。最快的方法是将数据存储为 .ini 文件并使用 PHP 内置的parse_ini_file对其进行解析。您还可以将数据存储为其他格式,例如 XML 和 YAML,但我不推荐使用 XML,因为您可能不会在不同的系统之间传输数据,而且 XML 往往更难阅读所有无关标签(与yaml或ini)。

我个人更喜欢 yaml 并使用Symfony 的 Yaml 组件解析器,它将 yaml 文件解析为一个数组。Symfony 的 Yaml 组件可以在 Symfony 框架之外使用。您也可以查看Zend 的 Yaml 解析器

在您选择了您希望使用的格式和解析器之后,就像将配置文件存储在您的网络服务器可以访问的某个位置、需要它并通过解析器 API 传递它一样简单。解析后,您应该可以通过数组访问这些值。

- 更新 -

<?php

$settings = parse_ini_file('test.ini');

var_dump($settings);

结果:

array(41) {
["plugins"]=>
string(0) ""
["breadcrumb-navxt"]=>
string(5) "4.0.1"
["bp-moderation"]=>
string(5) "0.1.4"
["buddypress-activity-stream-hashtags"]=>
string(5) "0.4.0"
["buddypress-group-documents"]=>
string(5) "0.3.5"
["buddypress-group-email-subscription"]=>
string(5) "2.9.1"
["buddypress-links"]=>
string(3) "0.5"
["buddypress"]=>
string(6) "1.2.10"
["calendar"]=>
string(5) "1.3.1"
["collapsing-pages"]=>
string(5) "0.6.1"

这似乎按预期工作,所以如果我想要calendar插件的版本号,我会这样做:

var_dump($settings['calendar']);

要存储在动态变量中:

$settings = parse_ini_file('test.ini');

foreach ($settings as $key => $setting) {
    // Notice the double $$, this tells php to create a variable with the same name as key
    $$key = $setting; 
}

var_dump($calendar);
于 2012-04-18T17:18:00.637 回答
0

您可以将文件存储为 json 或 php 序列化格式吗?

于 2012-04-18T17:10:13.590 回答