我正在编写一个PHP应用程序,它可以通过Web界面编辑设置。我并不是指用户(实际上只有管理员)能够在文本编辑器中加载文件,而是使用表单进行更改,这将改变设置文件(做其他事情)。
在开发的这个阶段,设置存储在PHP文件中,例如:
define ('UPLOAD_DIR','uploads/'); define ('DISPLAY_NUM',true); $names = array('a' => 'b','c'=>'d','e'=>'f');
然而,解析数组(并且它们比上面的更复杂(即多级嵌套))看起来并不那么有趣。并且因为可以添加和删除特定设置,读取整个文件,然后再次写出所有设置,看起来也不好玩。
使用以下格式有哪些优缺点? (以及我错过的任何其他人):
(由于项目的要求,使用数据库不适合。我理解在许多情况下会优先使用数据库,而不是在这种情况下。)
如果您无法使用数据库,并且必须存储可以使用Web界面编辑的设置,您会怎么做?
(注意:这是this one的另一个问题,其中设置无法更改,它一直是PHP文件。是的,安装程序当前写出了一个具有正确设置的PHP文件。 )
答案 0 :(得分:2)
如果您不致力于使用XML,您可以考虑YAML。我只使用Ruby,但快速Google表明有一些PHP支持选项。 TBF,其中包含一些arguments against使用YAML和PHP,但是YMMV。
答案 1 :(得分:1)
好的,我没有得到任何我想要的答案。这是我期待的那种事情。
<强> INI 强>
<强> XML 强>
<强> YAML 强>
记住:没有数据库。需要能够使用复杂的数组。
答案 2 :(得分:0)
我不喜欢有人直接访问设置的想法,因此提供一个充当缓冲区的接口,防止故意攻击并确保清洁输出非常重要。
考虑到这一点,服务器端格式的选择根本不重要,只要你能正确地与它接口,所有其他问题都可以解决。
答案 3 :(得分:0)
我建议使用自定义XML文件,这样您的配置就可以很好地扩展,并且您可以使用PHP XML库来访问它。
一个简单的例子:
<myconfig>
<define>
<name>UPLOAD_DIR</name>
<value>uploads/</value>
</define>
<define>
<name>DISPLAY_NUM</name>
<value>true</value>
</define>
<array id="names">
<value index="a">b</value>
<value index="c">d</value>
<value index="e">f</value>
</array>
</myconfig>
答案 4 :(得分:0)
PHP内置了编辑和解析INI文件的功能,这些文件使用纯文本格式存储程序设置。
答案 5 :(得分:0)
我使用了两步法。变量及其名称存储在数据库中,其界面使用户能够更改它们。当他们更改文件时,文件会保存到服务器上,然后通过应用程序引用(更改将保存回数据库)。使更新变得简单并使备份变得简单 - 无需备份文件,只需备份数据库即可。生成的文件只是.inc文件,格式为$ variableName ='variablevalue';
答案 6 :(得分:0)
为什么不是普通的PHP?
配置-form.php的
表单method=POST action='configure.php'
,
输入字段ex。 name='upload' value='<?php echo UPLOAD; ?>'
configure.php文件:
$myfile = 'sets.php';
$fh = fopen( $myfile, 'w' );
$upload = '"/upload/"';
$txt = "define( UPLOAD, '" . $_POST['upload'] . "' );";
fwrite( $fh, $txt );
fclose( $fh );
你有它。简单的php为您创建配置文件。