Я пытаюсь смоделировать таблицу конфигурации для своего приложения, и я хотел бы узнать ваше мнение о том, как хранить несколько значений для значения конфигурации.
Например, как хранить доступные языки? Как сохранить допустимые расширения файлов и т. Д.?
Я хотел бы иметь поле key
и поле value
в моем столе configuration
, но у меня есть несколько способов хранения значения:
1,4,9,42
key
но разные values
, Я не понимаю, как я мог заставить это работать, это было бы очень непригодно …Спасибо за вашу помощь 🙂
Оставляя в стороне любое обсуждение того, является ли это хорошей идеей, многие люди делают это. Очень распространенный подход состоит в том, чтобы иметь поле «blob» в таблице «конфигурации» и хранить ваши данные в формате JSON. Вы будете сериализовать и десериализовать себя, но это не страшно.
Если вы хотите сохранить свою конфигурацию в базе данных (это не рекомендуется, но это имеет смысл, если у вас есть много экземпляров вашего приложения) — давайте проанализируем это:
Подход с сохранением нескольких строк одним ключом — давайте забудем об этом;)
Хранение многих значений, разделенных ,
— это может создать некоторые проблемы, если вам нужно сохранить значение с комой (например: 10,000
как десять тысяч). Затем вам нужно изменить его для хранения значений, как в CSV-файле, инкапсулированном с "
,
Лучшая идея — хранение сериализованных значений PHP. Поскольку ваше приложение написано на PHP, это будет лучшим родные метод. Использовать этот подход так же просто, как:
$ ConfigValue = десериализации (getMyValueFromDb ( «MYKEY»));
// или сохранить его после изменения
$ configValue = «новое значение»;
saveMyValueToDb (сериализации ($ configValue));
Также — PHP serialize
а также unserialize
позаботьтесь о экранировании значений и их правильном преобразовании, чтобы вам не приходилось беспокоиться о том, что некоторые строки, разделенные запятой, неправильно разделены explode
,