Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过web界面修改自定义配置文件的最佳方法?_Php_Javascript_Python_Configuration - Fatal编程技术网

Php 通过web界面修改自定义配置文件的最佳方法?

Php 通过web界面修改自定义配置文件的最佳方法?,php,javascript,python,configuration,Php,Javascript,Python,Configuration,所以在我们的项目中,我们有一个配置文件 %class name: class1 option1: on optionN: off %classend 我需要做一个网页界面,以方便修改这个文件。我曾考虑将JavaScript与PHP或Python一起使用(实际上没有多大区别) 那么,我将如何着手实施这一点呢?我应该将选项的值存储在数组或变量中吗?但是,我如何为每个类创建单独的数组或变量呢?如果有1000个班呢 或者我根本不应该在任何地方存储任何东西,而只是用regex实时定位所需的选项 我可以

所以在我们的项目中,我们有一个配置文件

%class
name: class1 
option1: on
optionN: off
%classend
我需要做一个网页界面,以方便修改这个文件。我曾考虑将JavaScript与PHP或Python一起使用(实际上没有多大区别)

那么,我将如何着手实施这一点呢?我应该将选项的值存储在数组或变量中吗?但是,我如何为每个类创建单独的数组或变量呢?如果有1000个班呢

或者我根本不应该在任何地方存储任何东西,而只是用regex实时定位所需的选项


我可以举一些代码示例来说明如何最好地将设置与类关联吗?例如,程序“知道”option1:on属于名为class1的类。

对于类似的内容,我建议使用某种结构化格式,例如或,而不是自己发明

这样做的好处是:

  • 人们已经为这些结构化格式编写了编码器和解析器,因此您可以轻松地获取一个库并将其与您选择的语言一起使用

  • 结构化格式可以轻松地跨不同的应用程序移植

  • 任何第三方都可以轻松地在其应用程序中实现配置文件

至于使用web界面编辑它们,如果您使用的是XML或YAML,PHP优秀的XML和YAML扩展应该允许您轻松浏览配置文件并修改所需的变量

至于将设置与类关联,这可以通过使用XML或YAML轻松解决

在XML中,您的文件可能如下所示

<class name="class1">
 <option1>on</option1>
 <optionN>off</optionN>
</class>

<class name="class2">
 <option1>on</option1>
 <optionN>off</optionN>
</class>

<class name="class3">
 <option1>on</option1>
 <optionN>off</optionN>
</class>

在…上
关
在…上
关
在…上
关

您只需创建2个php页面即可管理此配置文件: 1.php:读取配置文件并以友好的方式显示它 2.save.php:保存您修改的内容

read.php的示例代码:

<?php
$f = fopen('config.cfg', 'r');
# Read the file line by line
$curr = '';
while(!feof($f)){
    $line = fgets($f);
    if ($line=='%class'){
        $line = fgets($f);
        $classname = explode(': ', $line)[1];
        $curr = $classname;
        $cfg[$classname] = array();
    }
    if ($line=='%classend'){
        continue;
    }
    $opt = explode(': ', $line);
    $cfg[$curr][$opt[0]] = $opt[1];
}
fclose($f);
?>
<html>
<body>
<!-- output the $cfg into form -->
<form action="save.php" method="POST">
<?php foreach ($cfg as $k => $v): ?>
<p>
    <input type="text" name="<?php echo $k; ?>" value="<?php echo $k; ?>" /><br/>
    <textarea name="<?php echo $k; ?>_v"><?php echo implode(',',$v); ?></textarea>
</p>
<?php endforeach; ?>
<button type="submit">Save</button>
</form>
</body>
</html>



事实上,我认为这也是最好的方式。但在我们的项目中,已经有一个自定义配置文件,在其他一些地方也可以使用。这就是为什么我有一些麻烦。使用XML或例如INI会容易得多。@radioprotector:在这种情况下,也许您可以编写一对自定义配置到XML和XML到自定义配置转换器。这将使您能够通过XML执行操作工作,然后以自定义配置格式保存。
<?php
# try to save the POST data into file
?>