Собственно проблема
При работе в команде первое, с чем сталкиваешься - разное окружение у членов команды. Например, параметры подключения к базам у всех разные. Кто-то использует логирование через firePHP, кому-то достаточно штатного лога. В свое время, на других проектах, мы уже решили эту проблему следующим образом - ввели понятие авторской конфигурации. Т.е существует основной конфигурационный файл (обычно его называем main.php), в который сведены все общие для всех настройки (либо, это может быть конфигурация для продакшена, но лучше все же для production завести свой авторский конфиг), а любой разработчик может создать свой авторский файл, в котором переопределить и/или расширить (это удобно для разработки фич, которых еще нет в trunk) основную конфигурацию. Так же такая фича полезна когда у одного из разработчиков возникает необходимость подключится к работе с товарищем. Конфигурации должны легко переключаться, без внесений изменений в код.
Решение
Решение оформлено в виде расширения (хотя по сути оно не является расширением, ибо включается в работу раньше самого фреймворка) - pha-yii-author.
Установка и настройка
- Скачать код и развернуть в папку protected.
- Создать основной конфигурационный файл main.php.
- Создать авторский конфигурационный файл, например, developer_one.php (совет - называйте авторские файлы по именам членов команды, так будет понятнее кому он принадлежит).
- В папке author, которая должна была появится после п.1, создать файл .developer_one (точка является обязательной). Файл может быть пустым, его содержимое не используется. Файл лучше сразу добавить в список игнорируемых в используемой системе контроля версий.
- Изменить index.php. Пример изменения находится в extensions/phaAuthor/examples/index-with-author.php.
Код: Выделить всё
<?php
$webRoot=dirname(__FILE__);
// change the following paths if necessary
$yii=$webRoot.'/../framework/yii.php';
require_once( $webRoot . '/protected/extensions/phaAuthor/CPhaAuthor.php');
$sAuthor = CPhaAuthor::get();
if ( $sAuthor !== false ) {
// turn on debug mode + author config
$config = $webRoot.'/protected/config/' . $sAuthor . '.php';
if (!file_exists($config)) {
$config = $webRoot . '/protected/config/main.php';
}
defined('YII_DEBUG') or define('YII_DEBUG',true);
// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
}
else {
// production mode
$config=$webRoot . '/protected/config/production.php';
}
require_once($yii);
Yii::createWebApplication($config)->run();
p.s. Возможно, уже существует решение этой проблемы, но мне оно не встретилось.