# 코딩 컨벤션 (Coding Convention) > PHP 8.2+, CodeIgniter 4 기준. Auth·MemberModel·MemberLogModel 스타일을 따른다. ## 1. PHP 기본 - **네임스페이스**: `App\Controllers`, `App\Models`, `Config` 등 CI4 규칙 준수. - **클래스명**: PascalCase. 컨트롤러는 단수/역할명(`Auth`, `Home`). 모델은 `~Model` 접미사(`MemberModel`). - **메서드명**: camelCase. 동사+명사(`showLoginForm`, `findByLoginId`). - **상수**: 클래스 상수는 `UPPER_SNAKE_CASE` (`MB_STATE_NORMAL`, `LEVEL_SUPER_ADMIN`). - **private/protected**: 비공개 로직은 `private` 메서드로 분리(예: `buildLogData`, `insertMemberLog`). ## 2. 타입·공백 - 메서드 인자·반환 타입 선언 권장. 예: `function findByLoginId(string $mbId): ?object`, `function buildLogData(string $mbId, ?int $mbIdx): array`. - 연산자·쉼표 뒤 공백. `if (! $this->validate(...))` 처럼 `!` 뒤 공백. - 배열 키·값 정렬 시 화살표 정렬로 가독성 유지(선택). ## 3. 네이밍 규칙 요약 | 구분 | 규칙 | 예시 | |------|------|------| | 컨트롤러 | PascalCase, 단수/역할 | `Auth`, `Home`, `Admin\User` | | 메서드 | camelCase | `showLoginForm`, `login`, `create`, `store` | | 뷰 폴더 | 소문자, 컨트롤러 대응 | `auth/`, `home/`, `admin/user/` | | 뷰 파일 | 소문자, 언더스코어 가능 | `login.php`, `register.php`, `daily_inventory.php` | | 라우트 URI | 소문자, 케밥 또는 경로 | `login`, `logout`, `admin/users` | | 모델 | PascalCase + Model | `MemberModel`, `MemberLogModel` | | 테이블 | 소문자, 언더스코어 | `member`, `member_log` | | 테이블 PK | 테이블 약어_idx | `mb_idx`, `mll_idx` | | 테이블 컬럼 | 테이블 약어_컬럼명 | `mb_id`, `mb_name`, `mll_regdate` | ## 4. 주석 - 클래스 상단·복잡한 비즈니스 로직에 한글 주석 허용. 예: `/** mb_state: 1=정상, 2=정지, 0=탈퇴 */`. - PHPDoc: `@param`, `@return`, `@var` 등 필요 시 사용. ## 5. Config 참조 - 설정은 `config('Roles')`, `config('App')` 등으로 접근. `config('Roles')->getLevelName($level)` 형태 사용. 이 컨벤션을 지키면 Auth와 동일한 코드 스타일로 유지된다.