
SplObjectStorage::removeAllExcept 함수를 사용하여 예외를 제거한 후에 삭제된 객체는 PHP의 가비지 컬렉션에 의해 자동으로 삭제됩니다.
이 함수를 사용하여 예외를 제거한 후에, 해당 객체에 접근하려고 하면 PHP는 오류를 발생시키지 않습니다. 대신 NULL을 반환합니다.
예를 들어, 다음과 같이 SplObjectStorage::removeAllExcept 함수를 사용하여 예외를 제거한 후에 해당 객체에 접근하려고 하면 NULL을 반환합니다.
#hostingforum.kr
php
$storage = new SplObjectStorage();
$obj1 = new stdClass();
$obj2 = new stdClass();
$storage->attach($obj1);
$storage->attach($obj2);
$storage->detach($obj1); // 예외를 제거하는 함수는 detach 함수입니다.
$obj2 = null; // $obj2 변수를 null로 설정합니다.
try {
$storage->rewind();
while ($storage->valid()) {
$obj = $storage->current();
echo $obj . "n"; // 오류가 발생하지 않습니다.
$storage->next();
}
} catch (Exception $e) {
echo "오류 발생: " . $e->getMessage() . "n";
}
위 예제에서, $obj2 변수를 null로 설정한 후에, SplObjectStorage::rewind() 함수를 호출하여 객체를 순회하는 동안, $storage->current() 함수를 호출하여 현재 객체를 가져오면 NULL을 반환합니다.
따라서, SplObjectStorage::removeAllExcept 함수를 사용하여 예외를 제거한 후에 해당 객체에 접근하려고 하면 NULL을 반환합니다.
2025-06-13 14:08