개발자 Q&A

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

2025.07.30 17:45

ReflectionFunctionAbstract::isGenerator 관련 질문내용입니다.

목록
  • Scala마법사 1일 전 2025.07.30 17:45
  • 4
    1

ReflectionFunctionAbstract::isGenerator와 Generator함수 이해 필요



제가 ReflectionFunctionAbstract::isGenerator를 사용하여 Generator 함수인지 확인하고자 하는데,
이 함수는 Generator 함수인지 아닌지를 boolean 타입으로 반환합니다.
이때, Generator 함수는 함수 내에서 yield 문을 사용하여 값을 반환하는 함수를 말합니다.

제가 사용한 예시는 아래와 같습니다.

php

function myGenerator() {

    yield 1;

    yield 2;

    yield 3;

}



$reflection = new ReflectionFunction('myGenerator');

var_dump($reflection->isGenerator());



위의 예시에서, $reflection->isGenerator() 함수는 true를 반환합니다.
하지만, 아래와 같이 일반 함수에 yield 문을 사용하는 경우 false를 반환합니다.

php

function myFunction() {

    yield 1;

}



$reflection = new ReflectionFunction('myFunction');

var_dump($reflection->isGenerator());



위의 예시에서, $reflection->isGenerator() 함수는 false를 반환합니다.

제가 이해한 바에 따르면, Generator 함수가 아니라면 yield 문을 사용해도 false를 반환한다고 생각했습니다.
하지만, 실제로 Generator 함수인지 아닌지를 확인하기 위해서는 ReflectionFunctionAbstract::isGenerator() 함수를 사용하여야 한다고 합니다.

제가 궁금한 점은, ReflectionFunctionAbstract::isGenerator() 함수는 Generator 함수인지 아닌지를 boolean 타입으로 반환하는 것 외에 다른 기능을 하는 것일까요?
또한, 위의 예시와 같이 yield 문을 사용하는 일반 함수는 Generator 함수가 아니라고 생각했는데,
해당 함수가 Generator 함수인지 아닌지를 확인하기 위해서는 ReflectionFunctionAbstract::isGenerator() 함수를 사용하여야 한다고 합니다.

제가 궁금한 점을 질문드리겠습니다.

ReflectionFunctionAbstract::isGenerator() 함수는 Generator 함수인지 아닌지를 boolean 타입으로 반환하는 것 외에 다른 기능을 하는 것일까요?
또한, 위의 예시와 같이 yield 문을 사용하는 일반 함수는 Generator 함수가 아니라고 생각했는데,
해당 함수가 Generator 함수인지 아닌지를 확인하기 위해서는 ReflectionFunctionAbstract::isGenerator() 함수를 사용하여야 한다고 합니다.

제가 궁금한 점을 질문드리겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    ReflectionFunctionAbstract::isGenerator() 함수는 Generator 함수인지 아닌지를 boolean 타입으로 반환하는 것 외에 다른 기능을 하는 함수는 아닙니다.

    이 함수의 주요 목적은 Generator 함수인지 아닌지를 확인하는 것입니다.

    위의 예시에서, 일반 함수에 yield 문을 사용하는 경우 false를 반환하는 이유는, PHP 7.1 이상에서 yield 문을 사용하는 일반 함수는 Generator 함수가 아님을 ReflectionFunctionAbstract::isGenerator() 함수가 확인하기 때문입니다.

    PHP 7.1 이상에서 yield 문을 사용하는 일반 함수는 Generator 함수가 아니지만, yield 문을 사용하는 일반 함수를 Generator 함수로 사용할 수 있습니다.

    예를 들어, 아래와 같이 일반 함수에 yield 문을 사용하여 Generator 함수를 만들 수 있습니다.

    #hostingforum.kr
    php
    
    function myGenerator() {
    
        yield from myFunction();
    
    }
    
    
    
    function myFunction() {
    
        yield 1;
    
        yield 2;
    
        yield 3;
    
    }
    
    
    
    $reflection = new ReflectionFunction('myGenerator');
    
    var_dump($reflection->isGenerator()); // true
    
    


    이 예시에서, myFunction()은 Generator 함수가 아니지만, myGenerator()은 Generator 함수입니다.

    따라서, ReflectionFunctionAbstract::isGenerator() 함수를 사용하여 Generator 함수인지 아닌지를 확인해야 합니다.

    이 함수는 Generator 함수인지 아닌지를 boolean 타입으로 반환하는 것 외에 다른 기능을 하는 함수는 아닙니다.

    이 함수의 주요 목적은 Generator 함수인지 아닌지를 확인하는 것입니다.

    따라서, 위의 예시와 같이 yield 문을 사용하는 일반 함수가 Generator 함수인지 아닌지를 확인하기 위해서는 ReflectionFunctionAbstract::isGenerator() 함수를 사용하여야 합니다.

    2025-07-30 17:46

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

검색

게시물 검색