Организация файла конфигурации

stmegabit

Новичок
Доброго времени суток, жители phpclub. Только с регистрации, поэтому могу не до конца соображать что, где и как-) Ну собственно от нюансов к самому вопросу. Есть небольшое web-приложение на php, к которому необходимо разработать систему конфигурирования. Так вот нужно чтобы все значения которые входят в конфигурационный файл мог редактировать администратор системы. Поэтому массив заполняемый вручную мало подходит. Подскажите какой выбрать подход для реализации такой штуки, чтобы на обработку этого файла конфигурации уходило как можно меньше времени. Заранее спасибо.
 

akxxiv

Новичок
Создать файл с ручными конфигами (по умолчанию) И файл, который будет редактироваться программно. Сначала считываешь дефолтный, затем программный и складываешь их....
 

stmegabit

Новичок
Создать файл с ручными конфигами (по умолчанию) И файл, который будет редактироваться программно. Сначала считываешь дефолтный, затем программный и складываешь их....
Вопрос собственно в том и заключается как лучше (в основном по скорости обработки) реализовать этот редактируемый файл конфигурации. У меня была такая мысль. Первоначально сохранять все значения в xml файл. Потому что насколько знаю редактировать/добавлять/удалять там не сложно если есть простейшая иерархия. И написать что-то вроде мини-парсера который на основе данных из xml формировал бы php файл как тестовый в который бы записал уже массив типа ключ-значение пригодный для php. Чтобы впоследствии этот сгенирированный файл можно было прииклудить к проекту. Тогда по сути на скорости загрузки это не отразится, потому что будет просто инклудиться уже готовый файл. А его пересборку будет вызывать панель управления. Вопрос только не слишком ли сложно? Может есть решение по проще... но мне что-то ничего другого на ум не приходит...
 

Koc

Новичок
редактировать массивы в php ничуть не сложнее xml. + var_export($array, true)
 

Духовность™

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

Разделяй 2 понятия - пользовательский конфиг и, как минимум, конфиг программиста. В конфиге программиста, если так можно выразится, хранятся настройки - доступ к БД и некоторые другие вещи (по желанию), которые чисто теоретически пользователю давать не нужно.

Остальной конфиг, конфиг системы должен храниться в СУБД, ибо он ничем не отличается от обычных данных.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
parse_ini_file()
ini-файлы - хороший привычный всем формат, работает быстро
 

vovanium

Новичок
Остальной конфиг, конфиг системы должен храниться в СУБД, ибо он ничем не отличается от обычных данных.
Главное потом не доставать эти конфиги по одному с помощью нескольких десятков SQL запросов, как в некоторых CMSках видел :)
Да и вообще зачем конфиг в базе хранить, в базе разве что нужно хранить настройки юзера, а настройки которые выбираются при каждом обращении к скрипту сразу писать в файлы, чтобы потом не городить еще систему кеширования конфигов.
 

Духовность™

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

stmegabit

Новичок
редактировать массивы в php ничуть не сложнее xml. + var_export($array, true)
Да такой метод, по-моему самое то... Если в файле conf.php валяется как раз ассоциативный массив. То загрузить его, изменить что нужно и засунуть назад через var_export по сути проще простого. А я хотел пойти через дебри))) Клацаю кнопочку "мне нравится". Спасибо за обсуждение. Думаю тема закрыта. Отличный у Вас ресурс. Не то что парочка предыдущих, где пытался обитать...
 

tiger-nick

Новичок
Можешь хранить в одной переменной - ассоциативном массиве!
PHP:
$CONFIG;//конфигурация
//функция для чтения конфигурации
function ReadConfig($path){
     global $CONFIG;
     $CONFIG=unserialize(file_get_contents($path));
}
// функция для записи конфигурации
function WriteConfig($path){
     global $CONFIG;
     $f=fopen($path, 'w');
     fwrite($f,serialize($CONFIG));
     fclose($f);
}
// все, что будет нужно - это добавлятьь в ассоциативный массив
// новые значения
// ПРИМЕР ИСПОЛЬЗОВАНИЯ:
// считываем конфиг файл
ReadConfig('/config.ini');
// добавляем в конфигурацию новое значение
$CONFIG['sql-connect']=Array("user"=>"root", "password"=>"");
// расширяем
$CONFIG['sql-connect']['password']='password';
// сохраняем конфигурацию
WriteConfig('/config.ini');
Примечание: только на файлик конфигурации нужно установить права доступа 600, чтобы посторонние люди не могли его скачать или прочитать
 

vasa_c

Новичок
Нужно вначале разобраться, где у вас конфигурация системы, а где настройки сайта, пользователей и другие.
Конфигурацию системы никогда не приходится изменять через браузер и сохранять программно.
 

Koc

Новичок
о, и ты тут. А когда будет продолжение цикла статей про конфигурацию?

Кстати в сф2 вроде допилили разруливание конфигов (в том плане, что часть нод нужно мержить а часть заменять)
 

Духовность™

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

ini формат выбросить нафиг, он вообще для другого нужен.

"редактировать массивы в php" - извращение, такое же как и отказываться от СУБД в угоду файлам. Если не понятно почему, прочитайте реплику vasa_c.
 

stmegabit

Новичок
Всем спасибо. Выводы сделал)))) В принципе получил адекватные ответы на все вопросы.
Offtop: Только вот не вижу нельзя ли помечать тему как закрытую???
 
Сверху