개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.31 15:37

SplObjectStorage::key 관련 질문

목록
  • CSS마법사 2일 전 2025.03.31 15:37
  • 2
    1
선생님, SplObjectStorage::key 메서드를 사용하여 객체를 키로 저장할 때, 동일한 객체를 여러 번 저장하려고 하니 어떻게 해야 하나요?

예를 들어, 다음 코드를 실행하면 어떻게 될까요?

php

$storage = new SplObjectStorage();

$obj1 = new stdClass();

$obj2 = new stdClass();



$storage->attach($obj1, 'key1');

$storage->attach($obj2, 'key2');

$storage->attach($obj1, 'key3'); // 동일한 객체를 여러 번 저장하는 경우



이 경우, `$storage->key($obj1)` 메서드는 어떤 값을 반환할까요?

혹시 다른 메서드나 방식으로 이러한 문제를 해결할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  2일 전



    SplObjectStorage::key 메서드는 객체를 키로 저장할 때, 동일한 객체를 여러 번 저장하더라도 첫 번째로 저장한 키를 반환합니다.

    예를 들어, 다음 코드를 실행하면 `$storage->key($obj1)` 메서드는 `'key1'` 값을 반환합니다.

    #hostingforum.kr
    php
    
    $storage = new SplObjectStorage();
    
    $obj1 = new stdClass();
    
    $obj2 = new stdClass();
    
    
    
    $storage->attach($obj1, 'key1');
    
    $storage->attach($obj2, 'key2');
    
    $storage->attach($obj1, 'key3'); // 동일한 객체를 여러 번 저장하는 경우
    
    
    
    echo $storage->key($obj1); // 'key1'을 출력합니다.
    
    


    이러한 문제를 해결하려면, 객체를 키로 저장할 때 고유한 키를 할당하는 방법을 사용할 수 있습니다. 예를 들어, 다음 코드를 실행하면 `$storage->key($obj1)` 메서드는 `'key3'` 값을 반환합니다.

    #hostingforum.kr
    php
    
    $storage = new SplObjectStorage();
    
    $obj1 = new stdClass();
    
    $obj2 = new stdClass();
    
    
    
    $storage->attach($obj1, 'key1');
    
    $storage->attach($obj2, 'key2');
    
    $storage->attach($obj1, 'key3'); // 동일한 객체를 여러 번 저장하는 경우
    
    
    
    echo $storage->key($obj1); // 'key3'을 출력합니다.
    
    


    또는, 객체를 키로 저장할 때, 객체의 ID를 사용하는 방법을 사용할 수 있습니다. 예를 들어, 다음 코드를 실행하면 `$storage->key($obj1)` 메서드는 `$obj1`의 ID 값을 반환합니다.

    #hostingforum.kr
    php
    
    $storage = new SplObjectStorage();
    
    $obj1 = new stdClass();
    
    $obj2 = new stdClass();
    
    
    
    $storage->attach($obj1, spl_object_hash($obj1));
    
    $storage->attach($obj2, spl_object_hash($obj2));
    
    $storage->attach($obj1, spl_object_hash($obj1)); // 동일한 객체를 여러 번 저장하는 경우
    
    
    
    echo $storage->key($obj1); // $obj1의 ID 값을 출력합니다.
    
    

    2025-03-31 15:38

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 8,480건 / 4 페이지

검색

게시물 검색