因此,在我们的项目中,我们有一个类似的配置文件
%class
name: class1
option1: on
optionN: off
%classend
我需要制作一个网络界面,以便轻松修改这个文件。我曾考虑将JavaScript与PHP或Python结合使用(并没有太大区别)。
那么我该如何着手实施呢?我应该将选项的值存储在数组还是变量中?但是,我该如何为每个类创建一个单独的数组或变量呢?如果有1000个班怎么办?
或者,我根本不应该在任何地方存储任何东西,只需要使用regex实时定位所需的选项?
我可以举一些代码示例来说明如何最好地将设置与类相关联吗?例如,程序"知道"option1:on属于名为class1的类。
对于这样的事情,我建议使用某种结构化格式,如XML或YAML,而不是自己发明。
这样做的好处是:
-
人们已经为这些结构化格式编写了编码器和解析器,因此您可以轻松地获取库并将其与您选择的语言一起使用。
-
结构化格式可以很容易地跨不同的应用程序进行移植。
-
任何第三方都可以轻松地将您的配置文件实现到他们的应用程序中。
至于使用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.read.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>
还有save.php:
<?php
# try to save the POST data into file
?>
试试flaskcode
,一个基于python-flask框架的基于web的代码编辑器,它解决了我的问题。
允许其他人在不暴露不必要部分的情况下修改配置文件。
如何
安装
pip install flaskcode
用法
flaskcode /path/to/resource/folder
默认情况下,它将在";http://127.0.0.1:5001"
参考
https://pypi.org/project/flaskcode/