メソッド __callStatic

メソッド __callStatic は、PHP のマジックメソッドで、存在しない、またはアクセスできない静的メソッドの呼び出しを試みたときに自動的に呼び出されます。最初のパラメータで呼び出されるメソッド名を受け取り、2番目のパラメータで渡された引数の配列を受け取ります。

構文

phppublic static function __callStatic(string $name, array $arguments);

例

メソッド __callStatic を持つクラスを作成し、存在しない静的メソッドを呼び出してみます:

php<?php
class MyClass {
  public static function __callStatic($name, $args) {
    echo "Called static method '$name' with arguments: ";
    print_r($args);
  }
}

MyClass::nonExistentMethod(1, 2, 3);
?>

コード実行の結果:

phpCalled static method 'nonExistentMethod' with arguments: [1, 2, 3]

例

異なるタイプのオブジェクトを作成するためのシンプルなファサードを実装します:

php<?php
class Factory {
  public static function __callStatic($name, $args) {
    if (strpos($name, 'create') === 0) {
      $className = substr($name, 6);
      return new $className(...$args);
    }
    throw new Exception("Method $name not found");
  }
}

class User {}
$user = Factory::createUser();
var_dump($user instanceof User);
?>

コード実行の結果:

phptrue

関連項目

  • メソッド __call,
    オブジェクトの存在しないメソッドの呼び出しをインターセプトする
  • メソッド __get,
    存在しないプロパティへのアクセスをインターセプトする