__invoke 메서드

마법 메서드 __invoke는 클래스의 인스턴스를 함수처럼 호출할 수 있게 합니다. 객체가 함수처럼 호출되면 PHP는 자동으로 이 메서드를 호출합니다. 이 메서드는 일반 함수처럼 매개변수를 받고 값을 반환할 수 있습니다.

구문

phpclass MyClass {
  public function __invoke(...$args) {
    // 구현
  }
}

예제

__invoke 메서드를 가진 클래스를 만들고 객체를 함수처럼 호출해 보겠습니다:

php<?php
  class Greeter {
    public function __invoke($name) {
      return "Hello, $name!";
    }
  }
  
  $greet = new Greeter();
  echo $greet('John');
?>

코드 실행 결과:

php'Hello, John!'

예제

여러 매개변수와 함께 __invoke 사용하기:

php<?php
  class Calculator {
    public function __invoke($a, $b) {
      return $a + $b;
    }
  }
  
  $calc = new Calculator();
  echo $calc(5, 3);
?>

코드 실행 결과:

php8

예제

is_callable를 사용하여 객체가 호출 가능한지 확인하기:

php<?php
  class Test {}
  
  $obj1 = new Test();
  $obj2 = new class { public function __invoke() {} };
  
  var_dump(is_callable($obj1));
  var_dump(is_callable($obj2));
?>

코드 실행 결과:

phpfalse
true

함께 보기

  • 클래스의 생성자인 메서드 __construct,
  • 객체를 문자열로 표현할 수 있게 하는 메서드 __toString,