0

首先,我假设这不是坏习惯,因为各种流行的软件都使用这种方法,比如 SMF。

无论如何,所以我目前有这个代码:

<?php
// main visual config
$cfg['lang']    = 'en';

// paths
$path['admin']  = 'index.php?p=admin';
$path['admin2'] = 'zvfpcms/admin';
$path['root']   = 'zvfpcms';
$path['images'] = 'zvfpcms/img';
$path['css']    = 'zvfpcms/css';
$path['js']     = 'zvfpcms/js';
$path['pages']  = 'zvfpcms/pg';
?>

问题是,我希望通过界面直接编辑 $cfg 变量。

这将如何实现?我认为替换字符串不是一个好主意,尤其是当我创建的未来 $cfg 变量有大量可能性(甚至无限)时。

或者,我是否必须满足于不同的方法......

答案赞赏!

4

5 回答 5

1

Pear Config将让您轻松地从不同的源读取和写入配置,包括 PHP 文件/数组。您可能需要移动$cfg到它自己的文件中并包含它,以便其他变量等不受影响。

您也可以自己使用var_export()然后覆盖文件来完成,同样您可能需要将变量移动到它自己的文件中。我认为这会比 Pear 类编写更混乱/可读性更低的 PHP。

于 2009-05-07T08:18:21.720 回答
0

将设置存储在数据库中,或者您可以使用标准的 ini 文件(键=值对);

lang=en
timezone=CET

阅读它们:

function loadSettings() {
    $cfg = array();
    foreach (file('settings.ini') as $line) {
        list ($key, $value) = explode('=', $line);
        $cfg[$key] = $value;
    }
    return $cfg;
}

文件 I/O 的效率低于标准数据库调用,尤其是在您已经与数据库建立开放连接的情况下。

于 2009-05-07T07:06:57.570 回答
0

我认为这是不好的做法的原因是因为您可以在编辑之前有一个正在运行的系统,在编辑中有一些错误(也许您没有转义单引号字符)并且在编辑之后整个应用程序变得不可用,因为PHP 无法解析配置文件,这几乎会影响您所做的一切。

XML 建议不错,因为您可以处理读取 XML 时发生的任何错误。

如果您有一个数据库(阅读这篇文章,您似乎没有使用数据库,这很好),那将是存储数据的最佳位置 - 这就是它的用途。在平面文件的世界中,读取非 PHP 文件并对其进行解释比自己自动编辑 PHP 文件要好得多。

于 2009-05-07T07:32:45.013 回答
0

只需将所有设置保存在数据库中,当设置更改时,重建配置文件。

于 2009-05-07T07:02:01.687 回答
0

不要让您的 PHP 编辑 PHP 代码。请改用 XML 配置文件。读出 XML 信息,如果要进行更改,请更改从 XML 文件生成的数据结构中的值并将其吐回新的配置文件中。

于 2009-05-07T07:02:31.870 回答