개발자 Q&A

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

2025.05.11 23:28

runkit7_function_copy 관련 질문

목록
  • 정렬연구가 3일 전 2025.05.11 23:28
  • 7
    1
제가 PHP에서 runkit7_function_copy 함수를 사용하여 함수를 복사하는 중에 문제가 생겼습니다.
사용한 코드는 다음과 같습니다.

php

function test() {

    echo "Hello, World!";

}



$runkit7_function_copy('test', 'test2');



이 코드를 실행하면 test2 함수는 정상적으로 생성되지만, test2 함수의 내부 코드를 확인해 보면 test 함수의 코드가 아닌 다음과 같은 코드가 들어있다고 합니다.

php

function test2() {

    echo "Hello, World!";

}



test2 함수의 내부 코드가 원본 함수 test의 코드와 다르다는 점이 이해가 가지 않습니다.
runkit7_function_copy 함수를 사용하여 함수를 복사하는 방법에 대해 여쭤보려고 합니다.

    댓글목록

    profile_image
    나우호스팅  3일 전



    runkit7_function_copy 함수는 PHP 5.3 이상에서 사용할 수 있는 함수로, 기존 함수를 복사하여 새로운 함수를 생성하는 함수입니다.

    이 함수는 기존 함수의 코드를 완전히 복사하는 것이 아니라, 함수의 이름, 반환 타입, 매개 변수를 복사하여 새로운 함수를 생성합니다.

    따라서, 기존 함수의 코드를 확인할 때, 기존 함수의 코드가 아닌 새로운 함수의 코드를 확인할 수 있는 것입니다.

    이 문제를 해결하기 위해서는, 기존 함수의 코드를 직접 복사하여 새로운 함수를 생성하는 방법을 사용할 수 있습니다.

    예를 들어, 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    function test() {
    
        echo "Hello, World!";
    
    }
    
    
    
    $code = 'function test2() {' . file_get_contents(__DIR__ . '/test.php') . '}';
    
    eval($code);
    
    


    이 코드는 test.php 파일의 내용을 복사하여 test2 함수를 생성합니다.

    또는, PHP 5.5 이상에서 사용할 수 있는 Closure::fromCallable() 함수를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    function test() {
    
        echo "Hello, World!";
    
    }
    
    
    
    $test2 = Closure::fromCallable('test');
    
    


    이 코드는 test 함수를 복사하여 test2 함수를 생성합니다.

    이러한 방법을 사용하여, 원본 함수의 코드를 정확하게 복사할 수 있습니다.

    2025-05-11 23:29

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

검색

게시물 검색