如何存储php app的配置 - xml或ini或db

时间:2009-04-28 15:55:34

标签: php configuration

我有一个用PHP编写的应用程序,并且有许多可配置的变量。我们正在实现一项功能,用户可以在其中创建配置集并轻松切换。我应该如何储存我的配件?作为XML?在.ini文件中?在多个.ini文件中?在db?

如果我们在路上添加字段,会提供最大的灵活性?编码方便吗?

如果我使用数据库,我将不得不从应用程序的主要数据库中使用一个单独的数据库,原因是不值得进入,这让我对此感到害羞。 (另外,我们正在为我们的数据库使用.mdb文件。)

我一直沿着xml路线走下去,但是我在使用SimpleXML添加和编辑配置时遇到了问题。此外,该应用程序必须与PHP 5.1.6兼容,我对某些功能有点紧张。

从未真正处理过创建自定义ini文件....

一个小小的澄清:用户不会触摸文件 - 他们是非技术人员。因此,设置初始文件将由我们完成,但随后我们正在编写一个工具,将其配置写入我们选择的任何格式。

7 个答案:

答案 0 :(得分:5)

我会将配置项存储在PHP文件中。这是 I 使用过的最灵活的方法。

$config['website_url'] = 'google.com';

然后我有以下文件结构

- config/development
- config/production

我在名为 IN_PRODUCTION 的软件的早期定义了常量,当 TRUE 时,它会加载生产配置项,反之亦然。

这很简单,易于维护。

-Mathew

答案 1 :(得分:4)

将一个数据库的设置存储在不同的数据库中没有多大意义,IMO。

我会根据jmucchiello的建议选择ini文件,xml文件或php文件。每个选项都有它的优点和缺点。至于xml与ini,xml提供了更大的灵活性,但更难以维护(更不易读)。如果您的需求被ini涵盖,请坚持使用更简单的解决方案。仅当您需要超过ini文件时才能使用xml。

对于php解决方案,我会将可读性评估在ini和xml之间,但保存当前设置会更加困难。因此,尽管我喜欢这种方法,但对于您目前的观点,我不推荐它。

答案 2 :(得分:2)

实际上,我更喜欢可运行的PHP文件进行配置。您可以在可运行的文件中执行许多操作,而使用其他解决方案无法轻松完成这些操作。可运行文件的唯一一大缺点是管理员必须精通PHP才能安全地编辑文件。 PHP也可以在配置中描述复杂的数据类型 - 因为它是代码。

DB是一个问题,因为您仍需要外部配置文件来查找并连接到数据库。

XML对配置来说太过分了。

INI文件有效,您可以使用PHP ini库来读取它们。请参阅parse_ini_file()。 ini文件虽然不能很好地处理复杂的数据类型。

编辑回答Itay Moav(评论不会格式化这个权利):

<?php /* my config file */

$_CFG = Array(); /* problem solved */
$_CFG['key1'] = 'value1';
?>

答案 3 :(得分:2)

我刚刚看了一篇同样问题的帖子,这是一个很好的解决方案。 收集有用的代码是一种很好的做法。我想。 :)

单击iniHandler class以获取INI处理程序类!

答案 4 :(得分:1)

我认为这里的答案真的取决于你的个人情况。有些情况下,每个都是更好的选择。对于您的特定情况,xml可能是最好的。但是,如果你有多个相关的选项,那么xml真正在ini文件中闪耀的地方。例如,如果您需要保持数据库的连接信息,该数据库具有用于该特定连接的节点下面的连接的不同部分的节点,则可以更容易地阅读和维护。这实际上取决于数据。

我还会说,如果您只是提取单个值而不是在应用程序开始时将整个文件加载到内存中,那么xml文件将更容易使用。

答案 5 :(得分:0)

我会选择ini文件,它们是人类可读的,它们被快速解析(如果你缓存....)。
当然不是XML。人类阅读较少,解析不那么快。
由于速度,我不会做DB 我不会使用PHP变量,因为它会让你使用GLOBAL范围...

答案 6 :(得分:0)

编写自己的配置类来加载配置文件。一个很好的例子是CodeIgniter处理配置的方式。

http://codeigniter.com/user_guide/libraries/config.html

默认情况下会加载一些配置文件,或者您可以使用Config类加载特定的配置文件。

您可以下载源代码,看看他们是如何为教育目的而做的。

另一种选择是从数据库生成带有配置数组的php文件。因此,您可以管理所有选项并保存生成文件。