2010-12-30 4 views
0

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

Для решения, которые я использую следующую функцию:

function localhost($local_host_value, $remote_host_value = "") 
{ 
    if($_SERVER["REMOTE_ADDR"] == "127.0.0.1") 
    { 
     return $local_host_value; 
    } 
    else 
    { 
     return $remote_host_value; 
    } 
} 

Не мог бы вы предложить более элегантный подход или, по крайней мере, лучшее название для цитируемых выше функций?

+0

Um ... код всегда выполняется на локальном хосте: P – Mchl

+0

@Mchl, местным я имел в виду испытательную среду (127,0. 0,1). Каким будет подходящий термин? –

+0

«испытательная среда» будет подходящим термином;) – Mchl

ответ

1

Я думаю, что этот подход не является оптимальным в долгосрочной перспективе, так как все настройки распределены по всему вашему коду, и это очень сложно, например добавьте третью серверную среду (скажем, живой промежуточный сервер).

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

Похожие:

1

вы можете попробовать getenv('REMOTE_ADDR'); если вы дис-как с помощью супер-глобальные переменные

// Example use of getenv() 
$ip = getenv('REMOTE_ADDR'); 

// Or simply use a Superglobal ($_SERVER or $_ENV) 
$ip = $_SERVER['REMOTE_ADDR']; 

, как для имени функции

function is_localhost(...) <-- more like determine is local host (boolean) 

function get_host_value(...) <-- (string) 
+2

'is_localhost (...)' для меня предполагает, что он вернет логическое имя, которое мы находимся в localhost, или нет ... Я нахожу 'get_value_for_host (...)' или 'get_host_value (...)' более описательный – maid450

+0

@ maid450 - согласен – ajreal

1
function localhost($local_host_value, $remote_host_value = '') { 
    return $_SERVER['REMOTE_ADDR'] == '127.0.0.1'? $local_host_value : $remote_host_value; 
} 

является более кратким и чистым, на мой взгляд, но делает то же самое. Или с GetEnv в ajreal предлагает:

function localhost($local_host_value, $remote_host_value = '') { 
    return getenv('REMOTE_ADDR') == '127.0.0.1'? $local_host_value : $remote_host_value; 
} 

О имени функции, может быть get_host_value(...) бы мой выбор

PS: попробуйте использовать одинарные кавычки вместо двойных кавычек, когда ваша строка не содержит переменные: Is there a performance benefit single quote vs double quote in php?

Смежные вопросы