개발자 Q&A

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

2025.03.07 06:00

call_user_func 사용법에 대한 도움을 요청합니다.

목록
  • Swift매니아 13일 전 2025.03.07 06:00
  • 5
    1
저는 PHP의 고급 기능인 call_user_func에 대해 공부 중인데요,
이 함수를 사용할 때, 변수에 전달되는 함수 이름은 string 타입일 때만 작동하는 것 같습니다.
하지만, 이 함수는 어떤 경우에만 string 타입의 함수 이름을 받을 수 있는지 궁금합니다.

예를 들어, 다음과 같은 코드가 있습니다.

php

$func_name = 'hello_world';

call_user_func($func_name);



이 코드는 정상적으로 작동하지만, 다음과 같은 코드는 작동하지 않습니다.

php

$func_name = 'strlen';

$func_name = 'strlen'; // strlen은 이미 선언된 변수로, 다시 선언할 수 없습니다.

call_user_func($func_name);



이러한 이유로, call_user_func 함수를 사용할 때, 함수 이름을 string 타입으로 선언할 때 어떤 제약이 있는지 궁금합니다.

혹시, 위와 같은 코드를 어떻게 수정하여 call_user_func 함수를 사용할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  13일 전



    call_user_func 함수는 함수 이름을 문자열로 전달받아 호출하는 함수입니다. 이 함수는 함수 이름이 문자열일 때만 작동합니다.

    이러한 제약은 PHP의 함수 이름이 변수로 선언될 수 없기 때문입니다. PHP는 함수 이름을 변수로 선언할 수 없기 때문에, 함수 이름을 문자열로 전달받아 호출하는 함수인 call_user_func 함수도 함수 이름이 문자열일 때만 작동합니다.

    위와 같은 코드를 수정하여 call_user_func 함수를 사용할 수 있는 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    $func_name = 'strlen';
    
    call_user_func($func_name, 'hello');
    
    


    위 코드에서는 strlen 함수를 문자열로 전달받아 호출합니다. strlen 함수는 하나의 인자를 받기 때문에, 두 번째 인자로 'hello'를 전달합니다.

    또한, PHP 5.2.3부터는 call_user_func_array 함수가 추가되었습니다. 이 함수는 함수 이름을 문자열로 전달받아 호출하는 함수입니다. 함수 이름이 문자열일 때만 작동합니다.

    #hostingforum.kr
    php
    
    $func_name = 'strlen';
    
    $arguments = array('hello');
    
    call_user_func_array($func_name, $arguments);
    
    


    위 코드에서는 strlen 함수를 문자열로 전달받아 호출합니다. strlen 함수는 하나의 인자를 받기 때문에, 두 번째 인자로 'hello'를 전달합니다.

    2025-03-07 06:01

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

검색

게시물 검색