Config 환경 분리
BaseConfig 클래스 작성, .env 오버라이드, config() 헬퍼, env() 함수를 활용한 환경별 설정 분리 패턴을 학습합니다.
현재 환경(ENVIRONMENT):
development
.env 파일의
CI_ENVIRONMENT 값으로 제어됩니다.PlaygroundConfig 현재 값
config('PlaygroundConfig')로 읽은 값입니다. .env에 playground.debugMode = true를 추가하면 debugMode가 변경됩니다.
| 속성 | 값 | 타입 |
|---|---|---|
$appName |
CI4 Playground | string |
$version |
1.0.0 | string |
$debugMode |
false | bool |
$maxUpload |
5 MB | int |
$timezone |
Asia/Seoul | string |
시스템 환경 정보
CI4 상수, env() 헬퍼, config() 헬퍼로 읽은 값들입니다.
| 항목 | 값 |
|---|---|
| ENVIRONMENT | development |
| CI 버전 | 4.7.3 |
| PHP 버전 | 8.4.21 |
| Base URL | https://playground.cikorea.net |
| DB 드라이버 | SQLite3 |
| .env 파일 | .env 파일 존재 |
BaseConfig 클래스 작성
app/Config/PlaygroundConfig.php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class PlaygroundConfig extends BaseConfig
{
public string $appName = 'CI4 Playground';
public string $version = '1.0.0';
public bool $debugMode = false;
public int $maxUpload = 5; // MB
public string $timezone = 'Asia/Seoul';
}
규칙: 클래스명은 대문자로 시작,
namespace Config 사용, BaseConfig 상속.
파일 위치: app/Config/
.env 파일로 오버라이드
.env (프로젝트 루트)
# CI4 환경 설정
CI_ENVIRONMENT = development
# PlaygroundConfig 오버라이드
# 클래스명(소문자).속성명 = 값
playground.debugMode = true
playground.maxUpload = 10
playground.timezone = UTC
주의: .env 파일은 절대 git에 커밋하지 마세요.
.gitignore에 반드시 추가하세요.
config() vs new Config() vs env()
// 방법 1: config() 헬퍼 (권장)
// .env 오버라이드가 자동 적용됨
$cfg = config('PlaygroundConfig');
echo $cfg->debugMode;
// 방법 2: new 직접 생성
// .env 오버라이드가 자동 적용됨 (동일)
$cfg = new \Config\PlaygroundConfig();
// 방법 3: env() 헬퍼
// .env 값을 직접 읽음, 없으면 기본값 반환
$debug = env('playground.debugMode', false);
$env = env('CI_ENVIRONMENT', 'production');
// ENVIRONMENT 상수
if (ENVIRONMENT === 'development') {
// 개발 환경 전용 코드
}
// 내장 App 설정 읽기
$baseUrl = config('App')->baseURL;
환경별 설정 분리 전략
| 환경 | CI_ENVIRONMENT | 에러 표시 | 디버그 툴바 | 캐시 |
|---|---|---|---|---|
| 개발 | development |
상세 표시 | 활성화 | 비활성 |
| 테스트 | testing |
부분 표시 | 비활성 | 비활성 |
| 운영 | production |
숨김 | 비활성 | 활성화 |
CI4는
app/Config/ 하위에 환경별 폴더를 만들어 설정을 오버라이드할 수도 있습니다.
예: app/Config/development/Database.php