ФорумСообщество/dev/null → Как бы вы реализовали class конфигурации приложения

Как бы вы реализовали class конфигурации приложения

  • aba90

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 1 марта 2013 г. 16:12

    Чтение файла настроек
    Файл настроек
    Инициализация класса
    Реализация методов

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

    Сообщения: 9658 Репутация: N Группа: в ухо

    Spritz 1 марта 2013 г. 16:16, спустя 4 минуты 11 секунд

    на пхп
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 1 марта 2013 г. 16:17, спустя 1 минуту 20 секунд

    на ерланге ради фана
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 2 марта 2013 г. 1:54, спустя 9 часов 37 минут 16 секунд

    phpdude, ))) ты лучший!
    ιιlllιlllι унц-унц
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 2 марта 2013 г. 2:06, спустя 11 минут 10 секунд

    первые два пункта - инверсия зависимостей (dependency injection), т.е. сначала конфиг считывается из файла в переменную, затем передаётся в конструктор или сеттер фабрики


    $config = require ('config.php');
    $facktory = new Facktory($config);


    сам конфиг.пхп

    return array(
     'foo' => 'bar'
    );


    ещё пых начиная с 5.3 позволяет делать [man]array_replace_recursive[/man], что позволяет очень просто делать так


    $default_config = array(…); // конфиг по умолчанию
    $custom_config = require ('config.php');
    $config = array_replace_recursive($default_config, $custom_config);
    $facktory = new Facktory($config);
    {+++74+++}
    Инициализация класса
    Реализация методов

    непонятно о каком типе приложения идёт речь
    не всё полезно, что в swap полезло
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 2 марта 2013 г. 2:25, спустя 19 минут 56 секунд


    phpdude, ))) ты лучший!
    так а хули
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 2 марта 2013 г. 3:44, спустя 1 час 18 минут 12 секунд

    master, все верно, только дополню.

    если есть коллективный репозиторий для команды и есть несколько серверов, допустим на каждого разработчика по личному серверу + некий предварительный staging + в конце концов production, может возникнуть геморрой. каждый норовить прописать какие-то свои имена и пути, а потом это внезапно прилетает и мешает другому разрабу…

    разруливается так: на каждом сервере переменная конфигурации APPLICATION_ENV указывает что это за сервер. В случае Apache это
    SetEnv APPLICATION_ENV artoodetoo

    nginx + php_fpm это
    fastcgi_param APPLICATION_ENV artoodetoo

    и уже в скрипте начальной загрузки :

    $env = isset($_SERVER['APPLICATION_ENV']) ? $_SERVER['APPLICATION_ENV'] : 'production';
    $custom_config = require ($env . '.php'); // подгружается индивидуальный конфиг
    $config = array_replace_recursive($default_config, $custom_config); // и дополняется общими настройками
    // …
    ιιlllιlllι унц-унц
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 3 марта 2013 г. 17:32, спустя 1 день 13 часов 48 минут

    кто то должен написать про Zend_Config

Пожалуйста, авторизуйтесь, чтобы написать комментарий!