Подтвердить что ты не робот

Как хранить конфигурации для приложения php - xml или ini или db

У меня есть приложение, написанное на PHP, и есть множество настраиваемых переменных. Мы реализуем функцию, в которой пользователь может создавать наборы конфигураций и легко переключаться между ними. Как сохранить мои конфиги? как XML? в файле .ini? в нескольких файлах .ini? в db?

Что обеспечит максимальную гибкость, если мы добавим поля в будущем? Удобство кодирования?

Если я использую db, мне придется использовать отдельный файл из основного приложения по причинам, которые не стоит входить, что заставило меня уклониться от этого. (Кроме того, мы используем файлы .mdb для нашего db.)

Я шел по маршруту xml, но у меня проблемы с добавлением и редактированием конфигураций с помощью SimpleXML. Кроме того, приложение должно быть совместимо с php 5.1.6, и я немного нервничаю по поводу некоторых функций.

Никогда не занимался созданием пользовательских ini файлов....

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

4b9b3361

Ответ 1

Сохранение настроек для одной БД в другой БД не имеет особого смысла, ИМО.

Я бы выбрал либо файл ini, xml файл, либо php файл, как было предложено jmucchiello. У каждого варианта есть плюсы и минусы. Что касается xml или ini, xml предлагает большую гибкость, но его сложнее поддерживать (менее читаемый). Если ваши потребности покрыты ini, придерживайтесь более простого решения. Используйте xml, только если вам нужно больше, чем могут предложить файлы ini.

Что касается php-решения, я бы оценил удобочитаемость где-то между ini и xml, но было бы сложнее сохранить текущие настройки. Так что, насколько мне нравится этот подход, для вашего текущего сценария я бы не рекомендовал его.

Ответ 2

Я бы сохранил элементы конфигурации в файле PHP. Это самый гибкий метод, который я использовал.

$config['website_url'] = 'google.com';

Затем я имею следующую структуру файла

- config/development
- config/production

У меня есть константа, определенная на ранней стадии программного обеспечения с именем IN_PRODUCTION, когда это значение TRUE загружает элементы конфигурации производства и наоборот.

Это просто и легко ремонтируется.

-Mathew

Ответ 3

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

БД - проблема, потому что вам все еще нужен внешний файл конфигурации для поиска и подключения к db.

XML переполняет конфигурацию.

Файлы INI работают, и вы можете использовать библиотеки PHP ini для их чтения. См. Parse_ini_file(). ini файлы не имеют дело со сложным типом данных, но очень хорошо.

EDIT в ответ на Itay Moav (комментарии не будут форматировать это право):

<?php /* my config file */

$_CFG = Array(); /* problem solved */
$_CFG['key1'] = 'value1';
?>

Ответ 4

Я просмотрел сообщение с тем же вопросом всего лишь минуту назад, вот хорошее решение в ссылках. Это хорошая практика для сбора полезного кода. Я полагаю.:)

Нажмите класс iniHandler, чтобы получить класс обработчика INI!

Ответ 5

Я думаю, что ответ здесь будет действительно зависеть от вашей индивидуальной ситуации. Бывают случаи, когда каждый из них будет лучшим вариантом. Для вашего конкретного случая xml, вероятно, будет лучшим. Но где xml действительно сияет над ini файлом, если у вас есть несколько связанных опций. Например, если вам нужно удержать информацию о соединении для базы данных, имеющей узлы для разных частей соединения под node, для этого конкретного соединения может быть легче читать и поддерживать. Это действительно зависит от данных.

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

Ответ 6

Я бы пошел на ini файлы, они читаемы человеком, их разбирают очень быстро (и если вы кешируете...).
Конечно, не XML. Меньше правдоподобных, проанализированных не так быстро.
Я бы не сделал DB из-за скорости.
Я бы не использовал PHP vars из-за этого, поэтому вы используете GLOBAL scope...

Ответ 7

Напишите свой собственный класс конфигурации, который загружает файлы конфигурации. Хорошим примером является способ управления CodeIgniter.

http://codeigniter.com/user_guide/libraries/config.html

Он загружает некоторые файлы конфигурации по умолчанию или вы можете загрузить конкретный с помощью класса Config.

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

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