__unset 메서드

메서드 __unset은 PHP의 매직 메서드 중 하나입니다. 이 메서드는 unset 함수를 사용하여 객체의 존재하지 않거나 접근할 수 없는 속성을 삭제하려고 할 때 자동으로 호출됩니다. 메서드는 삭제하려는 속성의 이름이라는 하나의 매개변수를 받습니다.

구문

phppublic function __unset(string $name): void

예제

매직 메서드 __unset이 있는 클래스를 만들고 존재하지 않는 속성을 삭제해 보겠습니다:

php<?php
class MyClass {
  private $data = ['a' => 1, 'b' => 2];
  
  public function __unset($name) {
    echo "'$name'을(를) unset하려고 시도합니다\n";
    unset($this->data[$name]);
  }
}

$obj = new MyClass();
unset($obj->a);
unset($obj->c);
?>

코드 실행 결과:

php'a'을(를) unset하려고 시도합니다
'c'을(를) unset하려고 시도합니다

예제

비공개 속성에 대한 접근 제어를 위해 __unset 사용하기:

php<?php
class User {
  private $email = 'user@example.com';
  
  public function __unset($name) {
    if ($name === 'email') {
      throw new Exception("비공개 속성 'email'을 unset할 수 없습니다");
    }
  }
}

$user = new User();
unset($user->email);
?>

코드 실행 결과:

phpException: 비공개 속성 'email'을 unset할 수 없습니다

함께 보기

  • 메서드 __set,
    접근할 수 없는 속성에 쓰기를 시도할 때 호출됩니다
  • 메서드 __get,
    접근할 수 없는 속성을 읽으려고 할 때 호출됩니다
  • 메서드 __isset,
    접근할 수 없는 속성의 존재 여부를 확인할 때 호출됩니다