클래스
클래스(Class)는 기존 절차지향이나 단순 함수형 개발의 한계를 극복하고, 프로그램의 구성 요소를 유기적인 객체(Object) 단위로 설계하고 관리할 수 있도록 돕는 객체지향 프로그래밍(OOP)의 핵심 기법입니다.
PHP는 다양한 버전 업을 거쳐 견고하고 강력한 객체지향 개발 환경을 완벽하게 제공하고 있습니다.
1. 클래스와 인스턴스의 관계
- 클래스 (Class): 붕어빵 틀이나 건축 설계도에 비유할 수 있습니다. 객체가 가져야 할 데이터 속성(프로퍼티)과 동작(메서드)을 정의해 둔 텍스트 기반의 형틀입니다.
- 인스턴스 (Instance): 붕어빵 틀에서 구워져 나온 실제 붕어빵이나 설계도를 바탕으로 땅 위에 지어진 실제 빌딩입니다.
new키워드를 사용해 클래스를 실행하면 컴퓨터 메모리(Heap) 영역에 독립된 실체로 할당됩니다.
2. 기본적인 클래스 선언 예시
PHP에서는 다음과 같이 클래스를 정의하고 사용합니다.
class User {
// 1. 프로퍼티 (상태 저장 변수)
public $username;
// 2. 메서드 (동작 처리 함수)
public function setName($name) {
$this->username = $name; // $this는 현재 인스턴스 객체를 가리킵니다.
}
}
// 3. 인스턴스 생성
$user = new User();
$user->setName("jiny");
echo $user->username; // "jiny" 출력
class 키워드 뒤에 원하는 이름을 기재하고 중괄호 { } 내부에 속성과 행위를 정의합니다. 클래스명은 관례적으로 대문자로 시작하는 영문 단어로 표기합니다.
3. 상세 학습 내용 요약
본 단원에서는 클래스를 다루기 위해 필수적으로 숙지해야 할 다양한 언어 명세와 고급 기법을 단계적으로 학습합니다.
- class 선언: 클래스의 기본 명명 규칙과 코드 상에서의 정의 및 파일 매핑 방법을 설명합니다.
- 프로퍼티: 클래스에 포함되는 변수인 프로퍼티를 관리하고, 캡슐화의 핵심인
public/protected/private접근 제어 지시자를 활용하는 법을 배웁니다. - 메서드: 클래스 전용의 함수인 메서드를 구현하고 매개변수 전달과 처리 결과를 조율하는 기법을 학습합니다.
- 클래스 상수: 한 번 정의하면 수정되지 않고 인스턴스화 없이도 참조 가능한
const상수의 정의와 참조 범위 연산자(self::,parent::)의 사용법을 배웁니다. - 인스턴스 생성:
new연산자를 활용하여 텍스트로 된 클래스를 메모리에 실제 물리적인 힙(Heap) 객체 인스턴스로 동적 할당하는 문법을 배웁니다. - 객체 복사: 대입 연산자(
=)에 의한 참조 주소 공유 방식과 물리적인 새 메모리를 생성하는clone복제 방식의 개념 차이점을 비교합니다. - 객체 접근: 화살표 연산자(
->)를 활용하여 인스턴스의 멤버들에 안전하게 접근하고 다루는 방법을 알아봅니다. - $this: 인스턴스 메서드가 실행될 때, 호출 주체가 된 실제 자기 자신 객체를 나타내는 내부 내장 참조 지시자
$this사용 규칙을 이해합니다. - 정적 클래스: 인스턴스 생성(new) 과정 없이도 즉각 동작하며, 모든 인스턴스들이 데이터를 공유할 수 있는
static프로퍼티와 메서드를 학습합니다. - 익명 클래스: 일회용으로 잠깐 사용하고 폐기할 간단한 객체를 클래스 이름 선언 없이 임시 인스턴스화하는
new class기법을 소개합니다. - 매직 메서드: 생성자(
__construct), 소멸자(__destruct)처럼 특정 상황이 오면 PHP가 자동으로 내부 호출해 주는 특수 용도의__로 시작하는 메서드들을 학습합니다. - 생성자 프로퍼티 프로모션: PHP 8.0 이상에서 멤버 변수 선언과 생성자 초기화 주입 과정을 단 한 줄로 축소시키는 모던한 속성 승진 문법을 학습합니다.
- Nullsafe 연산자: PHP 8.0 이상부터 적용되는 체이닝 안전 장치로, 복잡한 인스턴스 경로 조회 시 null 에러로 사이트가 멈추는 현상을
?->연산자로 차단하는 기법을 배웁니다.
이전 학습
« 객체지향이란
다음 학습
생성자 프로퍼티 프로모션 »
서브목차