2012-03-21 5 views
0

Таким образом, в нашем проекте мы имеем конфигурационный файл, который выглядит как-тоЛучший способ изменить пользовательский файл конфигурации через веб-интерфейс?

%class 
name: class1 
option1: on 
optionN: off 
%classend 

мне нужно сделать веб-интерфейс для легкой модификации этого файла. Я думал об использовании JavaScript с PHP или Python (на самом деле это не имеет большого значения).

Итак, как я мог бы реализовать это? Должен ли я хранить значения параметров в массивах или переменных? Но тогда, как бы я создал отдельный массив или переменные для каждого класса? Что делать, если есть 1000 классов?

Или, может быть, я ничего не должен хранить в любом месте и просто найти нужный вариант с регулярным выражением в реальном времени?

И мог ли я иметь примеры кода, как лучше всего связать настройки с классом? Так что, например, программа «знает», что option1: on принадлежит классу с именем class1.

ответ

0

Для таких вещей я бы предложил какой-то структурированный формат, такой как XML или YAML вместо того, чтобы изобретать свои собственные.

Преимущества делать этого:

  • Люди написали кодеры и парсер для этих структурированных форматов, так что вы можете легко захватить библиотеку и использовать его с языком по вашему выбору.

  • Структурированные форматы могут быть легко переносимыми в разных приложениях.

  • Любая сторонняя организация может легко реализовать ваш файл конфигурации в своем приложении.

Что касается их редактирования с помощью веб-интерфейса, если вы используете XML или YAML, отличный XML PHP и расширение 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> 
+0

Я действительно считаю, что это лучший способ пойти тоже. Но в нашем проекте уже есть собственный файл конфигурации, который также используется в некоторых других местах. Вот почему у меня проблемы с этим. Было бы намного проще с XML или, например, с INI. – radioprotector

+0

@radioprotector: в этом случае, возможно, вы могли бы написать пару конвертеров custom-config-to-XML и XML-to-custom-config.Это позволит вам выполнять манипуляционную работу через XML, а затем сохранять обратно в формате настраиваемых конфигураций. –

0

Вы можете просто создать 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 
?> 
+0

Спасибо! Я это попробую. – radioprotector

Смежные вопросы