개발자 Q&A

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

2025.04.02 14:24

ReflectionFunction::getClosure를 사용하여 클로저 가져오기 문제

목록
  • 패스워드보안성애자 2일 전 2025.04.02 14:24
  • 2
    1
안녕하세요 선생님. ReflectionFunction::getClosure를 사용하여 클로저를 가져올 때 발생하는 문제에 대해 도움을 부탁드립니다.

클래스 내에서 클로저를 정의하고, ReflectionFunction::getClosure를 사용하여 클로저를 가져오려고 합니다. 하지만 클로저의 변수를 가져올 수 없어서 문제가 발생합니다.

클래스 내 클로저의 변수를 가져올 수 있는 방법이 있을까요?

예를 들어, 다음과 같은 코드를 작성했습니다.

php

class MyClass {

    public function myMethod() {

        $closure = function () {

            $x = 10; // 클로저 내 변수

            return $x;

        };

        $reflection = new ReflectionFunction('myMethod');

        $closure = $reflection->getClosure($this);

        var_dump($closure); // 클로저 변수를 가져올 수 없어서 null이 출력됩니다.

    }

}



클래스 내 클로저의 변수를 가져올 수 있는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2일 전



    ReflectionFunction::getClosure를 사용하여 클로저를 가져올 때 클로저의 변수를 가져올 수 없는 이유는 클로저가 실행되지 않았기 때문입니다. 클로저는 함수 내에서만 사용할 수 있는 변수를 가지고 있습니다. 따라서 ReflectionFunction::getClosure를 사용하여 클로저를 가져올 때는 클로저가 실행되지 않습니다.

    클래스 내 클로저의 변수를 가져올 수 있는 방법은 클로저를 실행하는 것입니다. 클로저를 실행하면 클로저의 변수가 생성되기 때문에 ReflectionFunction::getClosure를 사용하여 클로저의 변수를 가져올 수 있습니다.

    클래스 내 클로저의 변수를 가져올 수 있는 방법을 적용한 예제는 다음과 같습니다.

    #hostingforum.kr
    php
    
    class MyClass {
    
        public function myMethod() {
    
            $closure = function () {
    
                $x = 10; // 클로저 내 변수
    
                return $x;
    
            };
    
            $reflection = new ReflectionFunction('myMethod');
    
            $closure = $reflection->getClosure($this);
    
            $closure(); // 클로저를 실행합니다.
    
            var_dump($closure->getStaticVariables()); // 클로저의 변수를 가져올 수 있습니다.
    
        }
    
    }
    
    
    
    $obj = new MyClass();
    
    $obj->myMethod();
    
    


    클로저를 실행한 후, ReflectionFunction::getClosure를 사용하여 클로저의 변수를 가져올 수 있습니다. `$closure->getStaticVariables()`를 사용하여 클로저의 변수를 가져올 수 있습니다.

    2025-04-02 14:25

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

검색

게시물 검색