Files
jongryangje/docs/개발 규칙/03-파일분리구조.md
2026-04-08 00:23:55 +09:00

2.1 KiB

파일 분리 구조 (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와 동일한 패턴을 따른다.