Ответ 1
Как насчет формата файла INI? Это фактический стандарт файла конфигурации, а PHP имеет встроенный парсер для этого формата:
Я создаю фреймворк в PHP и должен иметь несколько файлов конфигурации. Некоторые из этих файлов неизбежно будут иметь большое количество записей.
Какой формат был бы лучшим для этих конфигурационных файлов?
Вот мое количественное определение наилучшего:
Я начал использовать XML, но быстро отказался по очевидным причинам. Я думал о JSON и YAML, но хотел посмотреть, что еще там.
Как насчет формата файла INI? Это фактический стандарт файла конфигурации, а PHP имеет встроенный парсер для этого формата:
YAML - хороший вариант: http://www.yaml.org/
Это очень просто и мощно, тоже
Проекты Ruby используют его для конфигурации.
Почему вы не используете файл PHP для конфигурации?
Преимущества очевидны:
Другие фреймворки, такие как Django и rails, используют конфигурационный файл, который является script.
Другой вариант - использовать JSON и использовать json_encode
и json_decode
.
В конфигурационных параметрах вы сможете использовать более богатые структуры данных.
Лично мне нравится делать конфигурационные данные в классе.
class appNameConfig {
var $dbHost = 'localhost';
var $dbUser = 'root';
//...
}
то использовать их все, что вам нужно сделать, это
$config = new appNameConfig;
mysql_connect($config->dbHost, $config->dbUser, $config->dbPassword) or die(/*...*/);
чтобы изменить конфигурацию, все, что вам нужно сделать, это прочитать файл с классом, в котором я использую такую функцию:
function updateConfig($parameter, $value) {
$fh = fopen('config.php', 'w+');
while(!feof($fh)) {
$file .= fgets($fh);
}
$fileLines = explode("\n", $file);
for($i=0;$i<count($fileLines);$i++) {
if(strstr($fileLines[$i], $parameter)) {
$fileLines[$i] = "$" . $parameter . " = '" . $value . "'";
}
}
$file = implode("\n", $fileLines);
fwrite($fh, $file);
fclose($fh);
}