скажем, я разрабатываю локально и отлаживаю мелкие вещи на реальном сервере.
Это хорошая идея иметь что-то подобное в моем коде? :
$is_local = (strpos($_SERVER['HTTP_HOST'], 'localhost') !== false); define ('DEBUG',$is_local);
А затем использовать его через мой код, когда настраиваете вещи?
$mysql_settings = (DEBUG) ? array(/*localhost settings*/) : array(/*live settings*/);
Таким образом, я могу использовать те же файлы в прямом эфире и на локальном хосте, поэтому я могу синхронизировать, не опасаясь иметь неправильные настройки соединения на реальном сервере.
Это хорошая или неправильная идея?
Ничего плохого в том, чтобы делать то, что вы делаете.
Другая стратегия заключается в создании некоторой переменной среды для вашей (или другой, непроизводственной) системы разработки.
Под apache вы можете вставить что-то вроде этого:
SetEnv MYAPP_ENVIRONMENT development
в httpd.conf или в соответствующем файле .htaccess
Затем в вашем конфигурационном коде:
if (! getenv('MYAPP_ENVIRONMENT')){ $env = 'production'; }else{ $env = getenv('MYAPP_ENVIRONMENT")); } require_once 'conf/config.' . $env . '.php';
Или что-то вдоль этих линий.
ИМХО, то, что ты делаешь, не так уж плохо.
Единственный недостаток – $is_local
:
$is_local = (strpos($_SERVER['http_host'], 'localhost') !== false);
Это может быть оценено в TRUE для сайта, например localhostIsAwesome.com
.
В целом, тем не менее, то, как вы это делаете, на самом деле довольно прилично .
Еще одно предложение – использовать $_SERVER[ 'SERVER_NAME' ]
это неплохая идея, если
поэтому он не учитывает сценарий, подобный
Практикой, которую я использую в проекте, является наличие файлов настроек, таких как conf.dev.php, conf.test.php, conf.prod.php для разных параметров среды, и один файл для флага переключателя env, например
$env = 'production';
то вы можете включать файл, содержащий настройки env, динамически на основе переключателя $ env, например:
require_once 'conf.'.$env.'.php';
не забудьте включить файл conf.dev.php в файл игнорирования git / hg / svn, поэтому он не будет испорчен среди членов команды, а conf.production.php также игнорирует файл по соображениям безопасности.
просто мои два цента.