개발자 Q&A

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

2025.04.24 17:40

SwooleCoroutine::call_user_func 사용 시 오류 발생

목록
  • 커밋광 1일 전 2025.04.24 17:40
  • 2
    1
안녕하세요 선생님.

저는 SwooleCoroutine::call_user_func 함수를 사용하여 코루틴 내에서 함수를 호출하려고 합니다.
하지만, 함수의 인자를 전달할 때 발생하는 오류에 대해 궁금합니다.
예를 들어, 다음 코드를 보겠습니다.

php

$co = new SwooleCoroutine();

$co->start(function () {

    $result = SwooleCoroutine::call_user_func('strlen', 'hello');

    echo $result . "n";

});



위 코드는 strlen 함수를 호출하여 hello 문자열의 길이를 출력하려고 합니다.
하지만, SwooleCoroutine::call_user_func 함수의 인자로 전달하는 함수 이름은 문자열 형태로 전달되어야 하는데,
이 문자열 형태의 함수 이름은 실제 함수 이름과 다를 수 있습니다.
예를 들어, strlen 함수는 strlen() 형태로 호출해야 하는데,
이 문자열 형태의 함수 이름을 SwooleCoroutine::call_user_func 함수의 인자로 전달하면 오류가 발생하나요?

위와 같은 오류가 발생하는 이유를 알고 싶습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    SwooleCoroutine::call_user_func 함수는 PHP의 built-in 함수를 호출할 때 사용됩니다. 이 함수는 함수 이름을 문자열 형태로 전달할 때, PHP의 함수 이름을 문자열 형태로 전달할 때는 괜찮지만, 함수 이름에 괄호가 포함된 경우 오류가 발생합니다.

    예를 들어, strlen() 함수를 호출할 때는 strlen() 형태로 호출해야 하지만, SwooleCoroutine::call_user_func 함수의 인자로 전달할 때는 strlen 형태로 전달해야 합니다. 괄호를 포함한 strlen() 형태로 전달하면 오류가 발생합니다.

    이러한 오류는 PHP의 함수 이름을 문자열 형태로 전달할 때 발생하는 문제로, SwooleCoroutine::call_user_func 함수를 사용할 때 주의해야 합니다.

    오류를 해결하기 위해, 함수 이름에 괄호를 제거한 형태로 전달하거나, PHP의 built-in 함수를 사용할 때는 SwooleCoroutine::call_user_func 함수 대신에 PHP의 built-in 함수를 직접 호출하는 방법을 사용할 수 있습니다.

    예를 들어, strlen() 함수를 호출할 때는 strlen() 형태로 호출할 수 있지만, SwooleCoroutine::call_user_func 함수의 인자로 전달할 때는 strlen 형태로 전달해야 합니다. 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    $co = new SwooleCoroutine();
    
    $co->start(function () {
    
        $result = SwooleCoroutine::call_user_func('strlen', 'hello');
    
        echo $result . "n";
    
    });
    
    


    또는, PHP의 built-in 함수를 직접 호출하는 방법을 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $co = new SwooleCoroutine();
    
    $co->start(function () {
    
        $result = strlen('hello');
    
        echo $result . "n";
    
    });
    
    


    이러한 방법을 사용하면 오류를 해결할 수 있습니다.

    2025-04-24 17:41

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

검색

게시물 검색