개발자 Q&A

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

2025.07.08 16:05

Closure::call 관련 질문

목록
  • 제로데이헌터 1일 전 2025.07.08 16:05
  • 8
    1
Closure::call 메서드 사용 방법에 대한 질문입니다.

Closure::call 메서드는 어떤 역할을 하는가요?
그리고 어떻게 사용할 수 있는지 알려주세요.

Closure::call 메서드는 어떤 상황에서 사용하는 것이 좋을까요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    Closure::call 메서드는 클로저 내부의 this 바인딩을 변경할 수 있는 메서드입니다. 클로저 내부의 this 바인딩은 클로저가 호출되는 컨텍스트에 따라 달라지는데, Closure::call 메서드를 사용하면 클로저 내부의 this 바인딩을 명시적으로 변경할 수 있습니다.

    Closure::call 메서드는 다음과 같은 형식으로 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $closure->call($this, $args);
    
    


    여기서 `$this`는 클로저가 호출될 때의 this 바인딩을 지정하고, `$args`는 클로저에 전달될 인수를 지정합니다.

    Closure::call 메서드는 다음과 같은 상황에서 사용하는 것이 좋습니다.

    - 클로저가 다른 컨텍스트에서 호출될 때 this 바인딩을 변경하고 싶을 때
    - 클로저가 다른 객체의 메서드와 동일한 이름을 가진 메서드를 호출하고 싶을 때
    - 클로저가 다른 객체의 프로퍼티에 접근하고 싶을 때

    예를 들어, 다음 코드는 클로저 내부의 this 바인딩을 변경하여 다른 객체의 메서드를 호출하는 예입니다.

    #hostingforum.kr
    php
    
    class A {
    
        public function method() {
    
            return 'A::method';
    
        }
    
    }
    
    
    
    class B {
    
        public function method() {
    
            return 'B::method';
    
        }
    
    }
    
    
    
    $closure = function() {
    
        return $this->method();
    
    };
    
    
    
    $a = new A();
    
    $b = new B();
    
    
    
    echo $closure->call($a) . "n"; // A::method
    
    echo $closure->call($b) . "n"; // B::method
    
    

    2025-07-08 16:06

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

검색

게시물 검색