编辑PHP文件以通过PHP进行配置

时间:2009-05-07 06:59:21

标签: php configuration-files

首先,我假设这是一个不错的做法,因为使用这种方法的各种流行软件,如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变量存在大量可能性(甚至无限)时。

或者,我是否必须采取不同的方法......

答案赞赏!

5 个答案:

答案 0 :(得分:1)

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

您也可以使用var_export()自己完成,然后再写文件,您可能需要将变量移动到自己的文件中。我认为这会比Pear类编写更麻烦/更不易读的PHP。

答案 1 :(得分:0)

只需拥有数据库中的所有设置,当设置更改时,重建配置文件。

答案 2 :(得分:0)

没有PHP编辑PHP代码。请改用XML配置文件。读取XML信息,如果要进行更改,请更改从XML文件生成的数据结构中的值,然后将其吐回到新的配置文件中。

答案 3 :(得分: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的效率低于标准数据库调用,特别是如果您已经建立了与数据库的开放连接。

答案 4 :(得分:0)

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

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

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