Приветствую. Мне в приложении, например, нужно обращаться к базе, а значит нужно как-то получать и хранить логин, пароль для базы; нужно обращаться к API vk
и для этого хранить токены. Также приложение должно иметь возможность менять эти токены/пароли. Написать эти пароли прямо в коде - тоже не лучший вариант.
Как это правильно сделать с точки зрения архитектуры? Конечно, можно просто хранить всё в каком-нибудь json
файле, но корректно ли так делать? Может стоит написать статический класс AccountsManager
, который будет всеми этими делами управлять?
Храни данные от базы в .php файле и подключай его через include.
return [
'host' => 'localhost',
'schema' => 'db_name',
#Дальше сам
];
В бд храни данные от акков: Логин, пароль, текущий токен.
Есть много вариантов (xml, json, txt файлы), и по сути каждый не плох, предложу вариант, который больше всего мне симпатичен, пишется класс для хранения настроек:
class Config
{
static private $params = [];
public static function get($key)
{
return isset(self::$params[$key]) ? self::$params[$key] : false;
}
public static function set($key,$value)
{
self::$params[$key] = $value;
}
public function __get($key)
{
return isset(self::$params[$key]) ? self::$params[$key] : false;
}
public function __isset($key)
{
return isset(self::$params[$key]);
}
}
Использование:
Config::set("db_host", "localhost");
Config::set("db_port", 5432);
Config::get("db_host");
кстати, можно данный класс привязать к файлу
Для таких вещей существует DotEnv.
Все ключи хранятся в ini-подобном файле .env
в корневой папке проекта. Но чтобы в git не загружали секретные данные, в ту же папку можно положить .env.example
, в котором будет шаблон настроек, который нужно переименовать или скопировать в .env
. Доступ к ключам будет через getenv
функцию. // Очень удобно, сам пользуюсь подобным подходом
Можно еще более заморочиться, если вы крупная компания. Продукт, называемый Vault от HashiCorp призванный централизованно хранить ключи и токены. Сам пока что не использовал, но выглядит интересно.
ВАЖНО!Секретные ключи никогда не должны быть доступны другим. Поэтому вшивать их в код, заливать в систему контроля версий и п.р. категорически не рекомендуется. Настройки должны лежать там, где используются, а именно на сервере.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Имею проблему с сортировкой в таблицеЕсть стандартное строение листа(таблицы):
Здравствуйте, хочу реализовать одну вещь, суть ее в следующем: Есть класс А, в нем метод method и свойство atribute и файл, например indexphp
Через JIRA REST API создаю инциденты с корпоративного сайтаС логином админа и агентов все работает, а с остальными пользователями (тянутся из LDAP) проблема