A __callStatic metódus

A __callStatic metódus egy mágikus metódus a PHP-ban, amely automatikusan meghívódik, amikor egy nem létező vagy nem elérhető statikus metódust próbálnak meghívni. Első paraméterként a meghívott metódus nevét, második paraméterként pedig az átadott argumentumok tömbjét kapja.

Szintaxis

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

Példa

Hozzunk létre egy osztályt a __callStatic metódussal, és próbáljunk meg egy nem létező statikus metódust meghívni:

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);
?>

A kód végrehajtásának eredménye:

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

Példa

Valósítsunk meg egy egyszerű fákadeot különböző típusú objektumok létrehozásához:

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);
?>

A kód végrehajtásának eredménye:

phptrue

Lásd még

  • a __call metódus,
    amely egy objektum nem létező metódusainak hívását fogja el
  • a __get metódus,
    amely a nem létező tulajdonságok elérését fogja el