Flexible Config

Выкладываем свои наработки
Ответить
karagodin
Сообщения: 26
Зарегистрирован: 2010.07.03, 06:26
Контактная информация:

Flexible Config

Сообщение karagodin »

При написании этого расширения я преследовал три цели:
  • Получить возможность удобно изменять какую конфигурацию в данный момент использовать
  • Иметь возможность наследовать конфигурации
  • Без лишних телодвижений иметь локальные настройки, которые не будет конфликтовать с настройками других разработчиков
Все они были достигнуты, скачать расширение можно здесь: http://github.com/karagodin/FlexibleConfig

Пример использования

Сохраняем файл FConfig.php в папку extensions своего приложения.

Пример содержания файла index.php:

Код: Выделить всё

<?php

$yii = 'yii/framework/yii.php';

// remove the following lines when in production mode
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);

require_once($yii);
Yii::createWebApplication(array(
    'basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'protected',
    'behaviors' => array(
        'fconfig' => array(
            'class' => 'ext.FConfig',
            'currentConfig' => 'dev',
            'configs' => array(
                'dev' => array(
                    'parent' => 'main',
                ),
                'production' => array(
                    'parent' => 'main',
                ),
            ),
        ),
    ),
))->loadConfigure()->run();
 
В папке config у меня для web-приложения четыре конфига: main.php - содержит общие настройки приложения, наследуется другими конфигами; production.php - имеет соответствующие настройки для production-сервера (отключен gii, CWebLogRoute и т.д.); dev.php - содержит девелоперские настройки (ведение логово и прочее); dev_local.php - содержит специфичные для данной машины настройки (например, подключение к бд), этот файл заигнорен в subversion и соответственно не затирается при коммитах/апдейтах.

Конфиги вида *_local.php подгружаются автоматически при загрузке соответствующего файла.

Если есть идеи по дополнению/улучшению, я с удовольствием рассмотрю)
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Flexible Config

Сообщение samdark »

karagodin
Сообщения: 26
Зарегистрирован: 2010.07.03, 06:26
Контактная информация:

Re: Flexible Config

Сообщение karagodin »

Наследовании конфигурации проще и прозрачнее. И удобно, если проект хранится в какой-нибудь системе контроля версий и над ним работает несколько разработчиков, для каждого иметь локальную версию настроек так чтобы они не конфликтовали между собой.

Я сам раньше пользовался этим рецептом, но он перестал меня удовлетворять. Мое решение просто развитие идеи этого рецепта в законченный вид, так чтобы можно было просто скопировать в проект и получить необходимый функционал.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Flexible Config

Сообщение samdark »

Так они и с подходом из рецепта конфликтовать не будут…

Посмотрел код. Неплохая обёртка, но нужна более подробная документация (и в репорзитарии в том числе). Плюс хорошо бы это выложить как расширение на официальный сайт: http://www.yiiframework.com/extensions/
karagodin
Сообщения: 26
Зарегистрирован: 2010.07.03, 06:26
Контактная информация:

Re: Flexible Config

Сообщение karagodin »

Sam Dark писал(а):Так они и с подходом из рецепта конфликтовать не будут…
Конфликтовать конечно не будут, но и смысла использовать их вместе нет, так как расширение делает тоже самое только удобнее.
Sam Dark писал(а):Посмотрел код. Неплохая обёртка, но нужна более подробная документация (и в репорзитарии в том числе). Плюс хорошо бы это выложить как расширение на официальный сайт: http://www.yiiframework.com/extensions/
Как раз этим и занялся, добавил ридми в исходники и залил на офф сайт http://www.yiiframework.com/extension/flexibleconfig/
Ответить