@remlin1000
любитель

Как хранить пользовательские настройки в Symfony?

Здравствуйте.
Только начинаю изучать Symfony, возник вопрос.
Мне необходимо сохранять/читать настройки моего приложения.
Почитав документацию, понял, что в Symfony лучше хранить настройки в YML файлах.
Итак, создал YML файл (setting.yml), например:
organization:
   office_1:
      set_1: "example_1"
      set_2: "example_2"
      ...
   office_2:
      set_1: "example_1"
      set_2: "example_2"
      ...


Читаю настройки без проблем таким образом:
получаю массив:
$value = Yaml::parseFile($this->get('kernel')->getRootDir() . '/setting.yml');

Потом получаю нужную мне настройку из массива.
Возникла проблема с записью настроек в файл. В соответствии с документацией есть метод:
$yaml = Yaml::dump($array);
file_put_contents('/setting.yaml', $yaml);

Но данный метод перезаписывает заново все настройки в файле, что меня не устраивает.
Можно ли как-то изменить значение определенного элемента в фале настроек по ключу, не перезаписывая весь файл?
Спасибо!
Или может быть есть какой-то другой способ хранения настроек приложения? может быть xml?
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Не надо в файл. Пишите в базу данных
Ответ написан
Комментировать
kylt_lichnosti
@kylt_lichnosti
На самом деле формат не играет роли. Симфа поддерживает yaml, xml, php.
Другой вопрос, что если это реально настройки приложения и они не динамические, а постоянные, вроде паролей, баз данных и т.п. То тогда используйте параметры:
https://symfony.com/doc/current/service_container/...

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы