2014-10-22 6 views
0

Итак, сейчас я использую две основные библиотеки для PHP-проекта: php-activerecord и slim micro framework. Я также являюсь пользователем бродяги и марионетки, потому что мне нравится держать вещи в синхронизации. Единственное, с чем я не могу показаться, что обворачиваю голову на этом этапе, - это управление разными средами, в которых работает мой код. Кажется, что в двух библиотеках я упоминаю попытку дать механизм для этого, но я не вижу, куда я должен помещать такую ​​информацию.Как эффективно использовать переменную окружения

//This is the config for php-AR 
ActiveRecord\Config::initialize(function($cfg){ 
    $cfg->set_model_directory('models'); 
    $cfg->set_connections(array(
     //This is what I am interested in 
     'development' => 'mysql://username:[email protected]/database_name')); 
}); 

Как и выше, у Slim есть настройки среды. Являются ли эти параметры среды основаны на файле конфигурации, который просто проходит путь на основе суперкомпьютера $ _SERVER?

Как это обычно управляется? Мне больше всего любопытно, что в больших условиях.

Редактировать 1) Просто чтобы быть более понятным. Мне любопытно, что логика добавлена ​​в код и настройки на используемых серверах. Я знаю, что это немного широк, поэтому см. Ниже.

Я видел много применений, где упоминается .htaccess, чтобы вытащить переменные окружения из. Очевидно, как я упоминал, PHP имеет супер-глобальный $ _SERVER, который я могу построить вокруг логики. Благодаря Diederik теперь я знаю, что на своих серверах я могу использовать ~/.bash_profile.

+0

Я не уверен, каков ваш вопрос. Вы спрашиваете, где определить переменные среды или как их реализовать в коде? Или оба? – Diederik

+0

Я спрашиваю, как лучше реализовать логику в моем коде. Я могу уточнить, чтобы быть более конкретным. – nerdlyist

ответ

1

Вы просмотрели readme для ActiveRecord? В нем четко говорится, как добиться этого. В приведенном выше коде вы уже определили базу данных разработки. Вы можете просто добавить к нему столько, сколько захотите. Только немного вам придется изменить, как только вы загрузите на другой сервер эта часть:

ActiveRecord\Config::initialize(function($cfg) 
{ 
    $cfg->set_default_connection(your_environment); 
}); 

Теперь your_environment должен быть определен первым. Это можно сделать, например:

$cfg->set_default_connection(getenv('APP_ENV')); 

И тогда вам просто нужно определить эту переменную среды. Это можно сделать несколькими способами. Примером может служить, чтобы положить его в вашем ~/.bash_profile:

export APP_ENV="development" 

Это должно сделать это.

+0

Спасибо, что было очень полезно. Похоже, мне нужно будет изменить код с этим предложением, хотя это правильно? Я пытаюсь найти способ настроить его так, чтобы между средами было ограничено, если какие-либо обновления кода. – nerdlyist

+1

Это действительно зависит от того, что вы хотите. Очевидно, что вам необходимо настроить параметры базы данных. Экспорт в файл ~/.bash_profile должен быть различным в каждой среде, и вы должны соответствующим образом добавить эти среды в свой массив 'set_connections'. Кроме того, на самом деле это не требует больших изменений ... – Diederik

Смежные вопросы