CI4 Playground
CodeIgniter 4의 주요 기능을 코드와 실행 결과로 함께 배우는 예제 모음입니다.
라우팅
Routing기본 라우트, URL 파라미터, 그룹 라우팅, Named Route, HTTP 메서드 제한까지 CI4 라우팅의 모든 것을 다룹니다.
컨트롤러
Controllers요청 처리, 응답 반환, Request/Response 객체 활용, RESTful 컨트롤러 구조를 예제로 설명합니다.
뷰
Views뷰 파일 렌더링, 레이아웃 시스템, 파셜(include), View Cell을 활용한 재사용 컴포넌트를 다룹니다.
모델 & 데이터베이스
Models & DatabaseModel CRUD, Query Builder, 페이지네이션, Entity 클래스, 마이그레이션/시더를 실제 SQLite DB로 실습합니다.
필터
FiltersBefore/After 필터, 인증 체크, 라우트 그룹별 필터 적용 방법을 세션 기반 예제로 보여줍니다.
RESTful API
API DevelopmentJSON 응답, ResourceController, API 에러 처리, Content-Type 협상을 이용한 RESTful API 개발 패턴을 다룹니다.
파일 업로드
File Upload단일/다중 파일 업로드, 유효성 검사, 파일 이동 및 관리 방법을 실습합니다.
세션 & 쿠키
Session & Cookie세션 저장/읽기/삭제, Flash 데이터, 쿠키 설정과 삭제를 실습합니다.
유효성 검사
Validation내장 유효성 검사 규칙, 커스텀 에러 메시지, 폼 재입력(old value) 처리를 실습합니다.
HTTP 클라이언트
HTTP ClientCURLRequest로 외부 API에 GET/POST 요청을 보내고 JSON 응답을 처리합니다.
이메일 발송
EmailHTML/텍스트 이메일 작성, SMTP 설정, 첨부 파일, 수신자 관리를 다룹니다.
서비스 레이어
Service Layer Pattern비즈니스 로직을 서비스 클래스로 분리하고 Config/Services에 등록하는 패턴을 실습합니다.
커스텀 헬퍼
Custom Helpers헬퍼 파일 작성, 로드, 자동로드 설정과 내장 헬퍼 활용법을 실습합니다.
캐싱
Caching파일/Redis 캐시 드라이버, TTL 관리, 캐시 히트/미스를 성능 비교와 함께 실습합니다.
다국어 (i18n)
InternationalizationLanguage 파일 작성, lang() 함수, 파라미터 치환, 런타임 로케일 변경을 실습합니다.
이벤트 시스템
EventsEvents::on(), trigger(), 우선순위, 체인 중단을 라이브 실행 로그와 함께 실습합니다.
CLI 커맨드
Spark CommandsBaseCommand로 커스텀 spark 명령어를 만들고 인자/옵션/테이블 출력을 실습합니다.
테스팅
TestingCIUnitTestCase, DatabaseTestTrait로 단위/통합 테스트를 작성하고 PHPUnit으로 실행하는 방법을 학습합니다.
DB 트랜잭션
Database Transactions계좌 이체 시나리오로 transStart/transComplete, 수동 롤백, 예외 기반 자동 롤백 패턴을 실습합니다.
로깅
LoggingPSR-3 레벨별 log_message() 사용법, 로그 파일 관리, Logger 설정을 실습합니다.
예외 처리
Exception HandlingPageNotFoundException, 커스텀 예외 클래스, try/catch, 글로벌 예외 핸들러 패턴을 학습합니다.
Throttler
Rate Limiting토큰 버킷 알고리즘 기반 IP Rate Limiting, ThrottleFilter로 API 과부하 방지를 학습합니다.
Model 콜백
Model CallbacksbeforeInsert/beforeUpdate로 비밀번호 자동 해싱, afterFind로 민감 데이터 마스킹 처리를 실습합니다.
Config 환경 분리
Config & EnvironmentBaseConfig 클래스 작성, .env 오버라이드, config() / env() 헬퍼로 개발/운영 환경을 분리합니다.
유효성 검사 고급
Advanced Validation커스텀 규칙 클래스, 규칙 그룹, permit_empty/if_exist 조건부 규칙으로 고급 유효성 검사를 구현합니다.
API 인증
API Key AuthenticationAPI Key 발급, Bearer 토큰 헤더 검증 필터, 키 활성화/비활성화 관리로 API 보안을 구현합니다.
Security 클래스
XSS / Sanitize / CSRFesc() 컨텍스트별 이스케이프, sanitizeFilename() 파일명 보안, CSRF 보호 설정을 실습합니다.
Query Builder 고급
Advanced Query BuilderJOIN, 서브쿼리, GROUP BY/HAVING 집계, Raw SQL 직접 실행 등 Query Builder 고급 기능을 학습합니다.
이미지 처리
Image ServiceGD/Imagick로 리사이즈, 썸네일(fit/crop), 회전, 텍스트 워터마크를 한 번에 처리합니다.
암호화 & 해싱
Encryption / Hashingpassword_hash로 bcrypt 해시 생성, password_verify로 검증. 암호화 vs 해싱 차이까지.
Entity 심화
Casts / Virtual / Datamap$casts 자동 타입 변환, $datamap 별칭, virtual property(getter), setter 정규화 패턴을 실습합니다.
Repository 패턴
Repository PatternInterface → Repository → Controller 레이어로 데이터 접근을 추상화하고 테스트 용이성을 확보합니다.
Pagination 심화
Advanced Pagination서버 페이저, AJAX 페이지네이션, Intersection Observer 무한 스크롤 세 가지 패턴 비교.
다중 DB 연결
Multi-DB Connection기본/보조 DB 그룹 동시 연결, 런타임 설정 배열, Model의 $DBGroup으로 DB 분리 패턴을 실습합니다.
회원 인증
Auth System회원가입 / 로그인 / 로그아웃 / 보호 페이지 / 비밀번호 변경까지 전체 인증 흐름을 실제로 동작시킵니다.
RESTful API v2 (JWT)
JWT AuthenticationJWT 토큰 발급/검증을 라이브러리 없이 직접 구현. Bearer 헤더로 인증되는 Stateless RESTful API.
큐(Queue) 시스템
DB-based Job QueueDB 기반 커스텀 큐 — 잡 추가(push) · 처리(process) · 재시도(retry) · 실패 관리까지 큐 시스템 전체 흐름 실습.
CSV/Excel 내보내기·가져오기
fputcsv · PhpSpreadsheet순수 PHP로 CSV 내보내기·가져오기(UTF-8 BOM 처리), PhpSpreadsheet로 스타일이 적용된 XLSX 파일 생성 및 읽기.
실전 예제: 게시판 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+ 필요.