PHP class 키워드 — 클래스 선언 완전 정리
PHP에서 처음으로 class 키워드를 사용해 클래스를 선언한 예제다. 클래스 안에 멤버변수와 메서드를 선언하고 $this로 자기 자신을 참조하는 기본 구조를 담고 있다.
클래스를 선언만 해서는 아무 출력이 없다. new User()로 객체를 생성해야 실행된다 (→ user2 파일).
new 키워드로 생성한다.PHP는 원래 웹 페이지를 빠르게 만들기 위한 스크립트 언어였기 때문에 함수(function) 중심으로 설계되었다. 전 세계에 PHP 개발자층이 두터워지고 코드가 엄청나게 쌓였기 때문에, 언어의 핵심 방향을 바꾸기가 쉽지 않았다.
그러다 2000년대 중반 Java + Spring 진영이 크게 성장하면서 객체지향 프로그래밍(OOP)의 장점이 부각되었고, PHP도 뒤늦게 클래스를 제대로 지원하기 시작했다.
• 파일을 include해서 조각 조합
• 짧은 스크립트엔 간결하고 빠름
• 구형 코드베이스에서 여전히 현역
• 네임스페이스·오토로딩 지원
• Laravel, Symfony 등 프레임워크
• 대규모 프로젝트 유지보수에 유리
class User { ... }처럼 class 키워드 뒤에 클래스 이름을 쓰면 클래스가 선언된다. PHP 공식 관례는 PascalCase(첫 글자 대문자, 이후 단어도 대문자로 시작)다.
클래스는 설계도(Blueprint)다. 선언만 해서는 아무것도 실행되지 않는다. new 키워드로 객체를 만들어야 비로소 동작한다.
User 클래스 → User.php. 프레임워크의 오토로딩이 이 규칙을 기반으로 동작한다.클래스 안에 선언된 변수를 멤버변수(member variable) 또는 프로퍼티(property)라고 부른다. 일반 변수와 달리 클래스 소속이기 때문에 별도의 이름으로 구별한다.
멤버변수에는 반드시 접근제어자(public / protected / private)를 붙이는 게 권장된다. 붙이지 않으면 기본적으로 public으로 처리되지만, 명시적으로 쓰는 것이 읽기에 좋다.
$x = 10;처럼 선언한 변수는 지역변수로, 메서드가 끝나면 사라진다. 멤버변수는 객체가 살아있는 동안 계속 유지된다.
클래스 밖에 선언된 독립 함수와 구별하기 위해, 클래스 안에 선언된 함수를 메서드(method)라고 부른다. 선언 문법은 동일하게 function 키워드를 사용하지만, 앞에 접근제어자를 붙인다.
메서드 안에서 같은 객체의 멤버변수나 다른 메서드에 접근하려면 $this를 써야 한다. $this는 "현재 이 메서드를 호출한 객체 자신"을 가리킨다.
Java에서 a.name처럼 점(.)을 쓰는 반면, PHP는 $a->name처럼 화살표 연산자 ->를 사용한다. 이 규칙은 멤버변수와 메서드 모두에 적용된다.
$this->name에서 멤버변수 앞에는 $를 붙이지 않는다. $this->$name이 아닌 $this->name이 올바른 문법이다.PHP에서 클래스는 파일 어디에 선언해도 동작한다. 하지만 관례적으로 별도 파일에 분리하는 것이 표준이다. 이 예제는 학습용으로 한 파일에 모두 담은 것이다.
User.php— 클래스 선언만 (설계도 파일)view.php—require 'User.php'후 객체 생성·메서드 호출- Laravel 같은 프레임워크는 오토로딩으로 클래스 파일을 자동으로 불러온다
class UserAccount → 파일명 UserAccount.php.| 실수 | 증상 | 해결 |
|---|---|---|
$this->$name 처럼 $ 붙임 |
변수명으로 인식해 예상치 못한 동작 발생 | $this->name — 화살표 뒤는 변수 이름 그대로 ($ 없음) |
클래스 선언 없이 new User() 호출 |
Class "User" not found 오류 |
클래스 선언이 먼저 있어야 하거나 파일을 require해야 한다 |
메서드 안에서 $name으로 멤버변수 접근 시도 |
undefined variable 경고 또는 빈 값 출력 | 반드시 $this->name으로 접근해야 한다 |
| 접근제어자 없이 멤버변수 선언 | 동작은 하지만 PHP 7+ 권고 위반 | public / private / protected 명시 권장 |
클래스 이름 소문자로 시작 (class user) |
동작은 하지만 PSR-1 코딩 스타일 위반 | PHP 관례: 클래스명은 PascalCase (User, UserAccount) |
핵심 한 줄 요약
Tags
'php' 카테고리의 다른 글
| PHP private 멤버변수 — 외부 접근 오류 완전 정리 (0) | 2026.07.08 |
|---|---|
| PHP 객체 메서드 호출 — 클래스 전체 흐름 완전 정리 (0) | 2026.07.08 |
| PHP 라디오버튼 — 단일 선택값 처리 완전 정리 (0) | 2026.07.08 |
| PHP select 드롭다운 — option 선택값 처리 완전 정리 (0) | 2026.07.07 |
| PHP 세션 — session_start()와 $_SESSION 완전 정리 (0) | 2026.07.07 |
왕진 블로그

댓글