이 답변이 .net 환경에서 도움이되는지, * nix/PHP 환경에서 도움이되는지를 잘 모르는 경우에도 동일한 상황을 처리합니다.당신이 회피로
OK
, 그래서 벙어리 일 및 발표 생산 코드를했다
는 일부 응용 프로그램의 동작을 따라 환경에있는 시간이있다. 개발 및 생산 환경 사이를 점검하기 위해이 기능을 제공하기 위해 전 세계 /etc/profile/profile.d/custom.sh의 설정에 다음 라인 (CentOS는)을 추가 :
SERVICE_ENV=dev
그리고 코드
나는이 래퍼 메서드를 사용하여 이름을 기반으로 환경 변수를 가져오고 내 응용 프로그램 코드에 액세스 할 수 있도록하는 값을 지역화합니다.
public function __call($method, $params)
{
// Reduce chatter on production envs
// Only display debug messages if override told us to
if (($method === 'debug') &&
(CoreLib_Api_Environment_Package::getValue(CoreLib_Api_Environment::VAR_LABEL_SERVICE) === CoreLib_Api_Environment::PROD) &&
(!in_array(CoreLib_Api_Log::DEBUG_ON_PROD_OVERRIDE, $params))) {
return;
}
}
, 당신은 고추에 환경 검사와 애플리케이션 로직을 원하지 않는 기억 몇 가지 극단적 인 사용 사례 등을 위해 저장 : 다음은 현재의 환경을 확인하고 (PHP에) 따라 반응하는 방법을 보여주는 코드 조각입니다 스 니펫으로 시연했다. 오히려 DNS를 사용하여 프로덕션 데이터베이스에 대한 액세스를 제어해야합니다. 예를 들어 개발 환경에서 다음 db 호스트 이름 mydatabase-db
은 실제 프로덕션 서버 대신 로컬 서버로 확인됩니다. 프로덕션 환경으로 코드를 푸시하면 DNS가 호스트 이름을 올바르게 해석하므로 환경 확인없이 코드가 "그냥 작동"해야합니다.
당신이 테스트에 자극에서 백업을 복원 할 때를 업데이트하기 위해 기억하는 테이블을 사용하여 하나의 문제 또는 dev 환경과 놀라지 않을 때 생산성을 볼 때 –
@ 마이클 - 아름답게 작동하지만, 대답으로 받아 들일 수없는 유일한 의견입니다 ... – DaveN59
@ DaveN59 그 경우 , 내 의견을 대답으로 변환했습니다 ... –