Форум → Сообщество → /dev/null → Как бы вы реализовали class конфигурации приложения
Как бы вы реализовали class конфигурации приложения
-
-
-
-
2 марта 2013 г. 11: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 полезло -
2 марта 2013 г. 11:25, спустя 19 минут 56 секунд
так а хули
phpdude, ))) ты лучший!Сапожник без сапог -
2 марта 2013 г. 12: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ι унц-унц -
Пожалуйста, авторизуйтесь, чтобы написать комментарий!