개발자 Q&A

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

2025.03.18 15:46

runkit7_function_copy 관련 질문

목록
  • 백엔드도령 1일 전 2025.03.18 15:46
  • 6
    1
안녕하세요 선생님,
runkit7_function_copy 함수를 사용하여 함수의 복사본을 만들려고 하는데요.
이 함수는 실제로는 함수의 내용을 복사하는 것이 아닌, 함수의 레퍼런스를 복사하는 것이라고 합니다.
하지만, 함수의 내용이 변경되면 복사한 함수의 내용도 함께 변경되는 것처럼 보입니다.
이러한 동작 Nguyên nhân이 무엇인지 궁금합니다.
또한, 실제로 함수의 내용이 변경되지 않는 경우를 어떻게 구분할 수 있는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    runkit7_function_copy 함수는 함수의 레퍼런스를 복사하는 것이 아니라, 함수의 내용을 복사하는 것처럼 보이는 이유는 PHP의 함수 호출 방식 때문입니다.

    PHP는 함수 호출 시, 함수의 내용을 복사하는 것이 아니라, 함수의 레퍼런스를 호출합니다. 따라서, runkit7_function_copy 함수가 함수의 레퍼런스를 복사하는 것처럼 보이는 것입니다.

    하지만, 함수의 내용이 변경되면 복사한 함수의 내용도 함께 변경되는 이유는 PHP의 함수 호출 방식의 한계 때문입니다. PHP는 함수의 내용을 복사하지 않기 때문에, 함수의 내용이 변경되면 복사한 함수의 내용도 함께 변경됩니다.

    따라서, 실제로 함수의 내용이 변경되지 않는 경우를 구분하려면, 함수의 내용을 직접 비교하는 방법을 사용할 수 있습니다. 예를 들어, 다음 코드를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    function test() {
    
        $x = 10;
    
    }
    
    
    
    $func1 = 'test';
    
    $func2 = runkit7_function_copy($func1);
    
    
    
    test();
    
    echo $func1() . "n"; // 10
    
    echo $func2() . "n"; // 10
    
    
    
    function test() {
    
        $x = 20;
    
    }
    
    
    
    echo $func1() . "n"; // 20
    
    echo $func2() . "n"; // 10
    
    


    위 코드에서, `test()` 함수의 내용이 변경되면, `$func1()`과 `$func2()`의 결과가 다르게 출력됩니다. 따라서, 실제로 함수의 내용이 변경되지 않는 경우를 구분할 수 있습니다.

    2025-03-18 15:47

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

검색

게시물 검색