CI4 Playground v4.7.3
한국어문서
라우팅
Routing

기본 라우트, URL 파라미터, 그룹 라우팅, Named Route, HTTP 메서드 제한까지 CI4 라우팅의 모든 것을 다룹니다.

GET/POST 파라미터 그룹 Named Route
컨트롤러
Controllers

요청 처리, 응답 반환, Request/Response 객체 활용, RESTful 컨트롤러 구조를 예제로 설명합니다.

Request Response JSON Redirect
Views

뷰 파일 렌더링, 레이아웃 시스템, 파셜(include), View Cell을 활용한 재사용 컴포넌트를 다룹니다.

Layout Partial View Cell esc()
모델 & 데이터베이스
Models & Database

Model CRUD, Query Builder, 페이지네이션, Entity 클래스, 마이그레이션/시더를 실제 SQLite DB로 실습합니다.

CRUD QueryBuilder Pagination Entity
필터
Filters

Before/After 필터, 인증 체크, 라우트 그룹별 필터 적용 방법을 세션 기반 예제로 보여줍니다.

Before After Auth Session
RESTful API
API Development

JSON 응답, ResourceController, API 에러 처리, Content-Type 협상을 이용한 RESTful API 개발 패턴을 다룹니다.

JSON ResourceController HTTP Status
파일 업로드
File Upload

단일/다중 파일 업로드, 유효성 검사, 파일 이동 및 관리 방법을 실습합니다.

getFile() 다중업로드 확장자검사 파일목록
세션 & 쿠키
Session & Cookie

세션 저장/읽기/삭제, Flash 데이터, 쿠키 설정과 삭제를 실습합니다.

session() Flash setCookie() getCookie()
유효성 검사
Validation

내장 유효성 검사 규칙, 커스텀 에러 메시지, 폼 재입력(old value) 처리를 실습합니다.

validate() 규칙 체인 커스텀메시지 matches
HTTP 클라이언트
HTTP Client

CURLRequest로 외부 API에 GET/POST 요청을 보내고 JSON 응답을 처리합니다.

curlrequest GET/POST JSON 쿼리파라미터
이메일 발송
Email

HTML/텍스트 이메일 작성, SMTP 설정, 첨부 파일, 수신자 관리를 다룹니다.

SMTP HTML메일 첨부파일 디버거
서비스 레이어
Service Layer Pattern

비즈니스 로직을 서비스 클래스로 분리하고 Config/Services에 등록하는 패턴을 실습합니다.

Services 의존성주입 비즈니스로직
커스텀 헬퍼
Custom Helpers

헬퍼 파일 작성, 로드, 자동로드 설정과 내장 헬퍼 활용법을 실습합니다.

helper() format_filesize time_ago highlight
캐싱
Caching

파일/Redis 캐시 드라이버, TTL 관리, 캐시 히트/미스를 성능 비교와 함께 실습합니다.

cache()->save() remember() TTL 히트/미스
다국어 (i18n)
Internationalization

Language 파일 작성, lang() 함수, 파라미터 치환, 런타임 로케일 변경을 실습합니다.

lang() ko/en/ja 파라미터치환 로케일전환
이벤트 시스템
Events

Events::on(), trigger(), 우선순위, 체인 중단을 라이브 실행 로그와 함께 실습합니다.

Events::on() trigger() 우선순위 체인중단
CLI 커맨드
Spark Commands

BaseCommand로 커스텀 spark 명령어를 만들고 인자/옵션/테이블 출력을 실습합니다.

BaseCommand CLI::write() --options table()
테스팅
Testing

CIUnitTestCase, DatabaseTestTrait로 단위/통합 테스트를 작성하고 PHPUnit으로 실행하는 방법을 학습합니다.

CIUnitTestCase DatabaseTestTrait PHPUnit 단위/통합
DB 트랜잭션
Database Transactions

계좌 이체 시나리오로 transStart/transComplete, 수동 롤백, 예외 기반 자동 롤백 패턴을 실습합니다.

transStart() transRollback() try/catch 커밋/롤백
로깅
Logging

PSR-3 레벨별 log_message() 사용법, 로그 파일 관리, Logger 설정을 실습합니다.

log_message() PSR-3 FileHandler threshold
예외 처리
Exception Handling

PageNotFoundException, 커스텀 예외 클래스, try/catch, 글로벌 예외 핸들러 패턴을 학습합니다.

PageNotFoundException try/catch 커스텀 예외 글로벌 핸들러
Throttler
Rate Limiting

토큰 버킷 알고리즘 기반 IP Rate Limiting, ThrottleFilter로 API 과부하 방지를 학습합니다.

Throttler::check() 429 토큰버킷 ThrottleFilter
Model 콜백
Model Callbacks

beforeInsert/beforeUpdate로 비밀번호 자동 해싱, afterFind로 민감 데이터 마스킹 처리를 실습합니다.

beforeInsert afterFind password_hash 마스킹
Config 환경 분리
Config & Environment

BaseConfig 클래스 작성, .env 오버라이드, config() / env() 헬퍼로 개발/운영 환경을 분리합니다.

BaseConfig .env config() env()
유효성 검사 고급
Advanced Validation

커스텀 규칙 클래스, 규칙 그룹, permit_empty/if_exist 조건부 규칙으로 고급 유효성 검사를 구현합니다.

커스텀 규칙 permit_empty if_exist 규칙 그룹
API 인증
API Key Authentication

API Key 발급, Bearer 토큰 헤더 검증 필터, 키 활성화/비활성화 관리로 API 보안을 구현합니다.

ApiKeyFilter Bearer 토큰 401/403 키 관리
Security 클래스
XSS / Sanitize / CSRF

esc() 컨텍스트별 이스케이프, sanitizeFilename() 파일명 보안, CSRF 보호 설정을 실습합니다.

esc() sanitizeFilename XSS CSRF
Query Builder 고급
Advanced Query Builder

JOIN, 서브쿼리, GROUP BY/HAVING 집계, Raw SQL 직접 실행 등 Query Builder 고급 기능을 학습합니다.

JOIN 서브쿼리 GROUP BY Raw SQL
이미지 처리
Image Service

GD/Imagick로 리사이즈, 썸네일(fit/crop), 회전, 텍스트 워터마크를 한 번에 처리합니다.

resize fit(crop) rotate watermark
암호화 & 해싱
Encryption / Hashing

password_hash로 bcrypt 해시 생성, password_verify로 검증. 암호화 vs 해싱 차이까지.

bcrypt password_hash password_verify cost
Entity 심화
Casts / Virtual / Datamap

$casts 자동 타입 변환, $datamap 별칭, virtual property(getter), setter 정규화 패턴을 실습합니다.

$casts $datamap getter/setter json/csv
Repository 패턴
Repository Pattern

Interface → Repository → Controller 레이어로 데이터 접근을 추상화하고 테스트 용이성을 확보합니다.

Interface DI CRUD 추상화
Pagination 심화
Advanced Pagination

서버 페이저, AJAX 페이지네이션, Intersection Observer 무한 스크롤 세 가지 패턴 비교.

paginate() AJAX Infinite Scroll
다중 DB 연결
Multi-DB Connection

기본/보조 DB 그룹 동시 연결, 런타임 설정 배열, Model의 $DBGroup으로 DB 분리 패턴을 실습합니다.

Database::connect $DBGroup 멀티 테넌트
회원 인증
Auth System

회원가입 / 로그인 / 로그아웃 / 보호 페이지 / 비밀번호 변경까지 전체 인증 흐름을 실제로 동작시킵니다.

register login 세션 인증 bcrypt
RESTful API v2 (JWT)
JWT Authentication

JWT 토큰 발급/검증을 라이브러리 없이 직접 구현. Bearer 헤더로 인증되는 Stateless RESTful API.

JWT HS256 Bearer Stateless
큐(Queue) 시스템
DB-based Job Queue

DB 기반 커스텀 큐 — 잡 추가(push) · 처리(process) · 재시도(retry) · 실패 관리까지 큐 시스템 전체 흐름 실습.

push/pop retry failed jobs delay
CSV/Excel 내보내기·가져오기
fputcsv · PhpSpreadsheet

순수 PHP로 CSV 내보내기·가져오기(UTF-8 BOM 처리), PhpSpreadsheet로 스타일이 적용된 XLSX 파일 생성 및 읽기.

fputcsv fgetcsv PhpSpreadsheet UTF-8 BOM

실전 예제: 게시판 CRUD

Practical Example — Board with Create/Read/Update/Delete

모든 핵심 기능을 통합한 게시판 예제입니다. SQLite DB, Model, Migration, View, 라우팅이 실제 애플리케이션처럼 연결되어 동작합니다. 소스코드와 실행 결과를 함께 확인할 수 있습니다.

빠른 시작
git clone https://github.com/hoksi/ci4-playground.git
cd ci4-playground
composer install
php spark migrate --all
php spark db:seed AllSeeder
php spark serve

SQLite를 사용하므로 별도 DB 설치 없이 바로 실행됩니다. PHP 8.1+ 필요.