__unset 메서드
메서드 __unset은 PHP의 매직 메서드 중 하나입니다. 이 메서드는 unset 함수를 사용하여 객체의 존재하지 않거나 접근할 수 없는 속성을 삭제하려고 할 때 자동으로 호출됩니다. 메서드는 삭제하려는 속성의 이름이라는 하나의 매개변수를 받습니다.
구문
public function __unset(string $name): void
예제
매직 메서드 __unset이 있는 클래스를 만들고 존재하지 않는 속성을 삭제해 보겠습니다:
<?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);
?>
코드 실행 결과:
'a'을(를) unset하려고 시도합니다
'c'을(를) unset하려고 시도합니다
예제
비공개 속성에 대한 접근 제어를 위해 __unset 사용하기:
<?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);
?>
코드 실행 결과:
Exception: 비공개 속성 'email'을 unset할 수 없습니다