클래스


클래스(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 에러로 사이트가 멈추는 현상을 ?-> 연산자로 차단하는 기법을 배웁니다.



서브목차