
SplObjectStorage::getHash 메서드는 객체의 해시 값을 반환하지 않습니다. 이 메서드는 객체를 등록한 SplObjectStorage 인스턴스의 해시 값을 반환합니다.
객체가 삭제되면 SplObjectStorage 인스턴스의 해시 값은 변경되지 않습니다. 하지만 객체가 변경되면 SplObjectStorage 인스턴스의 해시 값은 변경됩니다.
객체가 변경되면 이전 해시 값을 얻을 방법은 없습니다. 하지만 객체가 삭제된 후에 다시 객체를 등록하면 이전 해시 값을 얻을 방법은 있습니다.
객체가 삭제된 후에 다시 객체를 등록한 경우, 이전 해시 값을 얻으려면 SplObjectStorage 인스턴스의 해시 값을 저장한 후, 객체가 삭제되거나 변경되면 이전 해시 값을 사용해야 합니다.
다음은 예제입니다.
#hostingforum.kr
php
$storage = new SplObjectStorage();
$obj = new stdClass();
$storage->attach($obj);
$hash = spl_object_hash($obj); // 객체의 해시 값을 얻습니다.
echo $hash . "n"; // 객체의 해시 값을 출력합니다.
$storage->detach($obj); // 객체를 삭제합니다.
$obj = new stdClass();
$storage->attach($obj); // 객체를 다시 등록합니다.
$hash = spl_object_hash($obj); // 객체의 해시 값을 얻습니다.
echo $hash . "n"; // 객체의 해시 값을 출력합니다.
// 이전 해시 값을 얻으려면 SplObjectStorage 인스턴스의 해시 값을 저장한 후 사용해야 합니다.
$previousHash = spl_object_hash($obj);
$storage->detach($obj); // 객체를 삭제합니다.
$obj = new stdClass();
$storage->attach($obj); // 객체를 다시 등록합니다.
$hash = spl_object_hash($obj); // 객체의 해시 값을 얻습니다.
echo $hash . "n"; // 객체의 해시 값을 출력합니다.
echo $previousHash . "n"; // 이전 해시 값을 출력합니다.
위의 예제에서 이전 해시 값을 얻으려면 SplObjectStorage 인스턴스의 해시 값을 저장한 후, 객체가 삭제되거나 변경되면 이전 해시 값을 사용해야 합니다.
2025-07-11 04:14