# 파일 분리 구조 (File Separation Structure) > Auth·Home·Member·MemberLog 기준. 컨트롤러/모델/설정 역할별 분리 규칙. ## 1. 컨트롤러 (Controllers) - **위치**: `app/Controllers/` - **네임스페이스**: `App\Controllers` 또는 서브(예: `App\Controllers\Admin`). - **기준**: `Auth.php` — 로그인/로그아웃/회원가입 등 한 도메인당 한 컨트롤러. - **상속**: `extends BaseController`. - **역할**: 요청 수신 → 유효성 → Model 호출 → view() 또는 redirect(). 비즈니스 로직은 Model·별도 클래스로 분리. ``` app/Controllers/ ├── BaseController.php # 공통 상속 ├── Auth.php # 로그인/로그아웃/회원가입 ├── Home.php # 홈/대시보드 └── Admin/ # 관리자단(선택) ├── Dashboard.php ├── User.php └── ... ``` ## 2. 모델 (Models) - **위치**: `app/Models/` - **네임스페이스**: `App\Models` - **기준**: `MemberModel.php`, `MemberLogModel.php` — 테이블 1:1, `$table`, `$primaryKey`, `$allowedFields` 정의. - **역할**: DB 접근·조회/추가/수정/삭제. 컨트롤러는 Model 메서드만 호출. ``` app/Models/ ├── MemberModel.php # member 테이블 └── MemberLogModel.php # member_log 테이블 ``` ## 3. 설정 (Config) - **위치**: `app/Config/` - **기준**: `Routes.php`, `Roles.php` — 라우트·역할 등 앱 전역 설정. - **역할**: URL 라우팅, 역할 코드·한글명 매핑 등. 비즈니스 로직은 넣지 않는다. ``` app/Config/ ├── Routes.php # 라우트 정의 ├── Roles.php # mb_level 상수·levelNames ├── App.php ├── Database.php └── ... ``` ## 4. 라우트 규칙 - **GET** = 폼/목록, **POST** = 처리. 같은 URI를 GET/POST로 나누는 패턴 사용(예: `get('login')`, `post('login')`). - 그룹 필요 시 `$routes->group('admin', ['filter' => 'adminAuth'], function ($routes) { ... });` 형태. 새 기능 추가 시 위 구조에 맞춰 Controller/Model/Config를 분리하고, Auth·Member와 동일한 패턴을 따른다.