Управление двумя базами данных

У меня есть файл конфигурации (.php) в моем проекте, который содержит массив с настройками для всего проекта. Этот массив имеет структуру, подобную этой:

'db' =>
'prod' =>
'host'     => ''
'dbname'   => ''
'username' => ''
'password' => ''
'local' =>
'host'     => ''
'dbname'   => ''
'username' => ''
'password' => ''
'other' => 'settings'

Мой вопрос: как я буду управлять информацией о двойном соединении?

Должен ли я позже в этом файле, если я нахожусь в локальном, поместить локальную информацию в массиве prod? Или я должен использовать несколько файлов для конфигурации и включить хороший файл в этот config.php (который я бы затем включил в каждый файл этого проекта)?

Как бы вы это сделали?

Спасибо.

0

Решение

Как говорит @Dagon, обычно вы обнаруживаете, в какой среде вы находитесь, и читаете ту или иную конфигурацию.

Вы можете обнаружить это через PHP. Вы можете прочитать имя хоста из PHP и определить константу соответственно:

if(!defined('APPLICATION_ENV')) {
if(FALSE === stripos($_SERVER['SERVER_NAME']), 'www.example.com') {
define(APPLICATION_ENV, 'development');
} else {
define(APPLICATION_ENV, 'production');
}
}

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

Как только это будет установлено (либо в конфигурации вашего Apache, либо на системном уровне), вы можете прочитать его значение с помощью функции getenv:

echo getenv('APPLICATION_ENV');

Если вы хотите узнать больше об этом, вы можете прочитать этот пост:
Установите Application_ENV через конфигурацию виртуального хоста и прочитайте это на PHP

1

Другие решения

Используя комментарий @Dagon и ответ @Pere Pages, я пришел к решению, которое мне подходит:

В моем $config массив, у меня есть 3 массива: use, prod а также local,

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

В prod а также localУ меня есть настройки, адаптированные для каждой среды (те, которые в use).

В том же файле я перехожу каждую строку use (foreach), а для пустых я заполняю их соответствующим значением, полученным из prod или же localв зависимости от моего APPLICATION_ENV (установлен на local на моей машине).

Спасибо.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector