Редактирование файлов PHP для настройки через PHP - PullRequest
0 голосов
/ 07 мая 2009

Прежде всего, я предполагаю, что это НЕ плохая практика из-за различных популярных программ, использующих этот метод, таких как SMF.

В любом случае, поэтому у меня есть этот код:

<?php
// main visual config
$cfg['lang']    = 'en';

// paths
$path['admin']  = 'index.php?p=admin';
$path['admin2'] = 'zvfpcms/admin';
$path['root']   = 'zvfpcms';
$path['images'] = 'zvfpcms/img';
$path['css']    = 'zvfpcms/css';
$path['js']     = 'zvfpcms/js';
$path['pages']  = 'zvfpcms/pg';
?>

Дело в том, что я хочу, чтобы переменные $ cfg редактировались напрямую через интерфейс.

Как этого достичь? Я не могу думать, что замена строк была бы хорошей идеей, особенно когда есть очень большое количество возможностей (или даже бесконечных) для будущих переменных $ cfg, которые я создаю.

Или мне придется согласиться на другой метод ...

Ответы приветствуются!

Ответы [ 5 ]

1 голос
/ 07 мая 2009

Pear Config позволит вам легко читать и записывать конфигурацию в / из различных источников, включая файл / массив PHP. Вам, вероятно, потребуется переместить $cfg в отдельный файл и включить его, чтобы другие переменные и т. Д. Не были затронуты.

Вы также можете сделать это самостоятельно, используя var_export() и затем записав файл, опять же, возможно, вам потребуется переместить переменную в ее собственный файл. Я думаю, что это написало бы более грязный / менее читаемый PHP, чем класс Pear.

0 голосов
/ 07 мая 2009

Причина, по которой я считаю, что это НЕПРАВДА становится недоступным, потому что PHP не может разобрать файл конфигурации, что влияет практически на все, что вы делаете.

Предложение XML не является плохим, поскольку вы можете обрабатывать любые ошибки, возникающие во время чтения XML.

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

0 голосов
/ 07 мая 2009

Ваш PHP не должен редактировать PHP-код. Вместо этого используйте файл конфигурации XML. Прочитайте информацию XML, если вы хотите внести изменение, измените значение в структуре данных, сгенерированной из файла XML, и выложите его обратно в новый файл конфигурации.

0 голосов
/ 07 мая 2009

Либо сохраните настройки в базе данных, либо вы можете использовать стандартный ini-файл (пары ключ = значение);

lang=en
timezone=CET

Прочитайте их:

function loadSettings() {
    $cfg = array();
    foreach (file('settings.ini') as $line) {
        list ($key, $value) = explode('=', $line);
        $cfg[$key] = $value;
    }
    return $cfg;
}

Файловый ввод / вывод менее эффективен, чем стандартные вызовы базы данных, особенно если у вас уже есть открытое соединение с базой данных.

0 голосов
/ 07 мая 2009

Просто сохраните все настройки в вашей базе данных, и, когда настройки будут изменены, пересоберите файл конфигурации.

...