여정
PHP 배우기
무료 인터랙티브 온라인 PHP 강의입니다. 모든 레슨에서 직접 PHP를 작성합니다 — 문법, 함수, 배열, 폼, 세션, 동적 웹사이트를 만드는 기초까지. 경고가 뜰 땐 AI 힌트가 도와주고, 끝까지 마치면 무료 수료증을 드립니다.
28,877+ 명의 codders가 등록함
- 초보자 환영
AI 코딩 도우미
실습 중심의 대화형 강의
모든 레슨에 음성 나레이션 제공
지식을 확인하는 퀴즈
무료 수료증
커리큘럼
섹션 1
기초
섹션 시작하기시작펼치기접기필수 개념과 기본 기술로 튼튼한 기초를 다지세요Introduction to PHP
5 개 강의331- 01The PHP Language챌린지
- 02Hello World!챌린지퀴즈
- 03Tags and Statements퀴즈
- 04Comments퀴즈
- 05The new line챌린지퀴즈
Variables and Data Types
9 개 강의663- 01Numbers챌린지퀴즈
- 02Strings and Quotes챌린지퀴즈
- 03Booleans퀴즈
- 04Naming Conventions퀴즈
- 05Recap - Variable Init챌린지
- 06Empty Variables퀴즈
- 07String Concatenation챌린지퀴즈
- 08Getting User Input챌린지퀴즈
- 09Cast to Different Types챌린지퀴즈
Basic Operators
8 개 강의852- 01Arithmetic Operators챌린지퀴즈
- 02Modulo Operator챌린지퀴즈
- 03Exponentiation Operator챌린지퀴즈
- 04Combined Assignment챌린지퀴즈
- 05Increment/Decrement챌린지퀴즈
- 06Operator Precedence챌린지퀴즈
- 07Recap - Simple Calculations챌린지
- 08String Operators챌린지퀴즈
Comparison & Logical Operators
5 개 강의532- 01Comparison Operators챌린지퀴즈
- 02Equality & Identity챌린지퀴즈
- 03Logical Operators Part 1챌린지퀴즈
- 04Logical Operators Part 2챌린지퀴즈
- 05Recap - Simple Logic챌린지
Conditional Logic
6 개 강의639- 01If Statement챌린지퀴즈
- 02If - Else챌린지퀴즈
- 03The Ternary Operator챌린지퀴즈
- 04Null Coalescing Operator챌린지퀴즈
- 05Switch Statement챌린지퀴즈
- 06Recap - Making Decisions챌린지
Arrays Part 1 - Indexed
7 개 강의645- 01Introduction to Arrays퀴즈
- 02Creating Indexed Arrays챌린지퀴즈
- 03Accessing Elements by Index챌린지퀴즈
- 04Modifying Elements by Index챌린지퀴즈
- 05Array Size with Count챌린지퀴즈
- 06Adding Elements to an Array챌린지퀴즈
- 07Recap - Managing a Simple List챌린지
Arrays Part 2 - Associative
6 개 강의540- 01Intro to Associative Arrays퀴즈
- 02Accessing Values by Key챌린지퀴즈
- 03Modifying Values by Key챌린지퀴즈
- 04Adding New Key-Value Pairs챌린지퀴즈
- 05Check if Key Exists챌린지퀴즈
- 06Recap - Key-Value Data Store챌린지
반복문
7 개 강의746- 01for 반복문챌린지퀴즈
- 02while 반복문챌린지퀴즈
- 03foreach 반복문챌린지퀴즈
- 04키와 값으로 반복하기챌린지퀴즈
- 05break 문챌린지퀴즈
- 06continue 문챌린지퀴즈
- 07요약 - 데이터 반복하기챌린지
프로젝트: 간단한 할 일 목록
프로젝트7 개 강의1- 01프로젝트 개요 및 데이터챌린지
- 02새 작업 추가프로젝트
- 03모든 작업 표시프로젝트
- 04작업 완료 표시프로젝트
- 05작업 제거프로젝트
- 06완료 상태로 필터링프로젝트
- 07빈 목록 시나리오 처리프로젝트
Functions
8 개 강의857- 01Declaring & Calling Functions챌린지퀴즈
- 02Function Parameters챌린지퀴즈
- 03Returning Values챌린지퀴즈
- 04Default Parameter Values챌린지퀴즈
- 05Type Declarations for Params챌린지퀴즈
- 06Return Type Declarations챌린지퀴즈
- 07Variable Scope챌린지퀴즈
- 08Recap - Creating Reusable Code챌린지
Final Challenges
3 개 강의3- 01Challenge - Factorial Calc챌린지
- 02Challenge - Longest Word챌린지
- 03Challenge - Vowel Counter챌린지
섹션 2
논리 & 흐름
섹션 시작하기시작펼치기접기문제 해결 능력을 키우고 동적이고 상호작용적인 프로그램을 만드세요고급 함수
9 개 강의965- 01익명 함수챌린지퀴즈오디오
- 02클로저와 'use'챌린지퀴즈오디오
- 03화살표 함수챌린지퀴즈오디오
- 04콜백 함수챌린지퀴즈오디오
- 05'call_user_func' 사용하기챌린지퀴즈오디오
- 06가변 함수챌린지퀴즈
- 07참조에 의한 전달챌린지퀴즈
- 08재귀 함수챌린지퀴즈
- 09요약: 함수 메들리챌린지
고급 배열 조작
10 개 강의1066- 01'array_push'로 추가하기챌린지퀴즈
- 02'array_pop'으로 제거하기챌린지퀴즈
- 03'array_unshift'로 추가하기챌린지퀴즈
- 04'array_shift'로 제거하기챌린지퀴즈
- 05인덱스 배열 병합하기챌린지퀴즈
- 06연관 배열 병합하기챌린지퀴즈
- 07'array_slice'로 추출하기챌린지퀴즈
- 08'in_array'로 값 확인하기챌린지퀴즈
- 09'array_search'로 키 찾기챌린지퀴즈
- 10요약: 플레이리스트 연습 문제챌린지
배열 정렬
7 개 강의747- 01인덱스 배열 오름차순 정렬챌린지퀴즈
- 02인덱스 배열 내림차순 정렬챌린지퀴즈
- 03연관 배열 값 기준 정렬챌린지퀴즈
- 04연관 배열 키 기준 정렬챌린지퀴즈
- 05자연 순서 정렬챌린지퀴즈
- 06'usort'를 이용한 사용자 정의 정렬챌린지퀴즈
- 07요약: 리더보드 정렬챌린지
다차원 배열
6 개 강의639- 012차원 배열 생성하기챌린지퀴즈
- 022차원 배열 요소에 접근하기챌린지퀴즈
- 032차원 배열 요소 수정하기챌린지퀴즈
- 04중첩 루프로 반복하기챌린지퀴즈
- 052차원 연관 배열챌린지퀴즈
- 06요약: 간단한 그리드 연습챌린지
학생 성적부
6 개 강의6- 01프로젝트 설정: 데이터 구조챌린지
- 02새로운 학생 추가하기챌린지
- 03학생에게 성적 추가하기챌린지
- 04학생 평균 점수 계산하기챌린지
- 05우수 학생 찾기챌린지
- 06성적표 생성하기챌린지
고차 배열 함수
7 개 강의745- 01'array_map'으로 데이터 변환하기챌린지퀴즈
- 02사용자 정의 함수와 'array_map'챌린지퀴즈
- 03'array_filter'로 필터링하기챌린지퀴즈
- 04사용자 정의 함수와 'array_filter'챌린지퀴즈
- 05'array_reduce'로 데이터 축소하기챌린지퀴즈
- 06'array_walk'로 배열 순회하기챌린지퀴즈
- 07요약: 데이터 처리챌린지
날짜와 시간 다루기
6 개 강의539- 01'date()' 함수퀴즈
- 02'time()'을 이용한 Unix 타임스탬프챌린지퀴즈
- 03DateTime 객체 소개챌린지퀴즈
- 04DateTime 객체 포맷팅챌린지퀴즈
- 05DateTime 객체 수정하기챌린지퀴즈
- 06요약: 날짜 계산챌린지
오류 및 예외 처리
7 개 강의650- 01PHP 오류 이해하기퀴즈
- 02'try...catch' 블록챌린지퀴즈
- 03'finally' 블록챌린지퀴즈
- 04예외 발생시키기챌린지퀴즈
- 05사용자 정의 예외 생성하기챌린지퀴즈
- 06사용자 정의 예외 사용하기챌린지퀴즈
- 07요약: 입력 유효성 검사챌린지
이벤트 스케줄러
프로젝트6 개 강의1- 01이벤트 데이터챌린지
- 02새로운 이벤트 추가하기프로젝트
- 03다가오는 이벤트 목록 표시하기프로젝트
- 04날짜별로 이벤트 정렬하기프로젝트
- 05월별로 이벤트 필터링하기프로젝트
- 06카운트다운 표시하기프로젝트
최종 챌린지
4 개 강의4- 01챌린지: 회문 판별기챌린지
- 02챌린지: 문자 빈도 계산챌린지
- 03챌린지: 장바구니 총액 계산챌린지
- 04챌린지: 고유 아이템 필터링챌린지
섹션 3
객체 지향 프로그래밍
섹션 시작하기시작펼치기접기클래스, 객체 및 재사용 가능한 구조로 코드를 구성하는 방법을 알아보세요OOP의 기초
9 개 강의969- 01외부 파일챌린지퀴즈
- 02OOP 입문챌린지퀴즈
- 03클래스 vs 객체챌린지퀴즈
- 04$this 키워드챌린지퀴즈
- 05메서드챌린지퀴즈
- 06프로퍼티챌린지퀴즈
- 07생성자 (__construct)챌린지퀴즈
- 08소멸자 (__destruct)챌린지퀴즈
- 09요약 - 간단한 계산기챌린지
네임스페이스와 오토로딩
5 개 강의534- 01네임스페이스 소개챌린지퀴즈
- 02use 키워드챌린지퀴즈
- 03PSR-4 오토로딩 표준챌린지퀴즈
- 04Composer 오토로더챌린지퀴즈
- 05요약 - 정리된 프로젝트챌린지
클래스 프로퍼티
6 개 강의644- 01인스턴스 vs 정적 프로퍼티챌린지퀴즈
- 02클래스 내 상수챌린지퀴즈
- 03정적 메서드와 프로퍼티챌린지퀴즈
- 04Private 및 Protected 프로퍼티챌린지퀴즈
- 05Readonly 프로퍼티 (PHP 8.1)챌린지퀴즈
- 06요약 - 은행 계좌 관리 프로그램챌린지
상속
6 개 강의644- 01상속 기초챌린지퀴즈
- 02parent:: 키워드챌린지퀴즈
- 03메서드 오버라이딩챌린지퀴즈
- 04final 키워드챌린지퀴즈
- 05추상 클래스챌린지퀴즈
- 06요약 - 직원 계층 구조챌린지
인터페이스와 계약
6 개 강의645- 01인터페이스 소개챌린지퀴즈
- 02인터페이스 구현하기챌린지퀴즈
- 03다중 인터페이스 구현챌린지퀴즈
- 04인터페이스 vs 추상 클래스챌린지퀴즈
- 05인터페이스를 활용한 Type Hinting챌린지퀴즈
- 06요약 - 도형 계산기챌린지
다형성
5 개 강의536- 01메서드 오버라이딩 다시 살펴보기챌린지퀴즈
- 02인터페이스를 통한 다형성챌린지퀴즈
- 03타입 힌팅 & 유니온 타입챌린지퀴즈
- 04지연 정적 바인딩챌린지퀴즈
- 05요약 - 결제 처리기챌린지
캡슐화
6 개 강의645- 01Public, Protected, Private챌린지퀴즈
- 02접근 제어자 심화챌린지퀴즈
- 03Getter와 Setter챌린지퀴즈
- 04정보 은닉챌린지퀴즈
- 05생성자 프로모션 (8.0)챌린지퀴즈
- 06요약 - 학생 기록 시스템챌린지
매직 메서드
7 개 강의753- 01매직 메서드 소개챌린지퀴즈
- 02__toString 및 __debugInfo챌린지퀴즈
- 03__get, __set, __isset, __unset챌린지퀴즈
- 04__call 및 __callStatic챌린지퀴즈
- 05__clone 및 객체 복제챌린지퀴즈
- 06__serialize 및 __unserialize챌린지퀴즈
- 07요약 - 커스텀 컬렉션챌린지
트레이트
5 개 강의544- 01트레이트 소개챌린지퀴즈
- 02여러 트레이트 사용하기챌린지퀴즈
- 03트레이트 충돌 해결챌린지퀴즈
- 04트레이트의 추상 메서드챌린지퀴즈
- 05트레이트 vs 상속챌린지퀴즈
고급 OOP 개념
7 개 강의761- 01합성 vs 상속챌린지퀴즈
- 02의존성 주입챌린지퀴즈
- 03익명 클래스챌린지퀴즈
- 04Enums (PHP 8.1)챌린지퀴즈
- 05Fibers (PHP 8.1)챌린지퀴즈
- 06객체 복제 심층 분석챌린지퀴즈
- 07제너레이터와 이터레이터챌린지퀴즈
타입 시스템과 에러 핸들링
7 개 강의754- 01타입 선언챌린지퀴즈
- 02Nullable 타입챌린지퀴즈
- 03유니온 및 인터섹션 타입챌린지퀴즈
- 04예외 클래스챌린지퀴즈
- 05커스텀 예외 계층 구조챌린지퀴즈
- 06Try, Catch, Finally챌린지퀴즈
- 07요약 - Form Validator챌린지
디자인 패턴 파트 1
5 개 강의546- 01디자인 패턴 소개챌린지퀴즈
- 02싱글톤 패턴챌린지퀴즈
- 03팩토리 패턴챌린지퀴즈
- 04옵저버 패턴챌린지퀴즈
- 05전략 패턴챌린지퀴즈
디자인 패턴 파트 2
7 개 강의764- 01커맨드 패턴챌린지퀴즈
- 02어댑터 패턴챌린지퀴즈
- 03데코레이터 패턴챌린지퀴즈
- 04템플릿 메서드 패턴챌린지퀴즈
- 05상태 패턴챌린지퀴즈
- 06컴포지트 패턴챌린지퀴즈
- 07레포지토리 패턴챌린지퀴즈
프로젝트: 도서 관리 시스템
프로젝트6 개 강의1- 01프로젝트 개요챌린지
- 02도서 및 사용자 클래스프로젝트
- 03대출 시스템프로젝트
- 04검색 기능프로젝트
- 05관리자 인터페이스프로젝트
- 06테스트 및 통합프로젝트
최종 챌린지
4 개 강의4- 01E-러닝 플랫폼챌린지
- 02뱅킹 시스템챌린지
- 03게임 캐릭터 개발챌린지
- 04차량 대여 서비스챌린지
Coddy에서 PHP을 배우는 이유
- 브라우저에서 실제 PHP 코드를 실행합니다. XAMPP, Apache, 로컬 서버 설정 모두 필요 없습니다. 각 레슨이 PHP를 서버 사이드에서 실행하고 결과를 즉시 보여줍니다.
- 오늘날 실제로 쓰이는 방식 그대로의 웹용 PHP — 변수, 제어 흐름, 함수, 배열, include, 폼, superglobals, 세션, 그리고 기본적인 데이터베이스 패턴까지. 모든 웹 개발자에게 필요한 PHP의 기초입니다.
- AI 힌트가 정답을 바로 알려주지 않으면서 PHP 에러를 디버깅하고 경고 메시지를 풀어내도록 도와주기 때문에, undefined index나 따옴표 처리 같은 흔한 문제들이 막다른 길이 아니라 배움의 순간이 됩니다.
- 과정을 마치면 받는 무료 PHP 수료증. PHP가 여전히 기본 요건인 웹 개발, WordPress, Laravel 직군에 신뢰감 있는 증빙이 됩니다.
PHP 학습에 대한 자주 묻는 질문
PHP은 배우기 쉬운가요?
PHP는 입문하기 쉬운 언어 중 하나입니다. 문법이 관대하고, HTML에 바로 섞어 쓸 수 있으며, 결과를 브라우저에서 곧바로 확인할 수 있습니다. 대부분의 초보자는 첫 한 시간 안에 동작하는 PHP 페이지를 만들어냅니다. 보안, 세션, 데이터베이스 다루기 같은 까다로운 부분은 나중에 단계적으로 다룹니다.
2026년에도 PHP를 배울 가치가 있나요?
네. PHP는 여전히 웹의 상당 부분을 책임지고 있습니다 — WordPress 하나만 해도 전체 사이트의 약 40%에서 돌아가고 있고, Laravel이나 Symfony 같은 프레임워크도 건재하게 활발히 쓰이고 있습니다. WordPress 개발, 에이전시 스타일의 웹 작업, 또는 MySQL과 연동되는 백엔드 작업이라면 PHP는 매우 실용적인 기술입니다.
PHP를 배우는 데 얼마나 걸리나요?
PHP의 기본 — 변수, 조건문, 반복문, 함수, 배열 — 은 매일 연습하면 1~2주면 익힐 수 있습니다. 여기에 폼, 세션, 데이터베이스 쿼리가 들어간 작은 동적 사이트를 만드는 데는 보통 1~3개월이 더 걸리고요. Laravel이나 WordPress 개발로 더 깊이 들어가는 건 또 별개의 단계입니다.
PHP와 HTML의 차이는 무엇인가요?
HTML은 웹 페이지의 구조를 기술하는 마크업 언어입니다. PHP는 서버에서 실행되는 프로그래밍 언어로, 브라우저에 도달하기 전에 HTML을 생성하죠 — 동적인 페이지를 만들고, 사용자를 로그인시키고, 폼 데이터를 저장하는 일이 모두 이런 식으로 이뤄집니다. 둘은 함께 동작합니다. 레이아웃은 HTML, 로직은 PHP가 맡는 거죠.
PHP를 온라인에서 무료로 배울 수 있나요?
네. 인터랙티브 PHP 강의는 무료입니다 — 레슨, 코딩 연습, 퀴즈, 그리고 수료증까지 모두 포함되어 있습니다. PHP는 샌드박스 환경의 서버 측에서 실행되기 때문에, 코딩을 시작하려고 Apache, MySQL, XAMPP를 로컬에 설치할 필요가 없습니다.
코스를 마치면 PHP 수료증을 받을 수 있나요?
네. PHP 코스를 끝내면 무료 수료증이 발급되며, 이력서에 추가하거나 LinkedIn에 공유할 수 있습니다. 직접 만든 WordPress 사이트, Laravel 앱, 포트폴리오 웹 프로젝트와 함께 두면 유용합니다.