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