__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