Metoden __callStatic

Metoden __callStatic er en magisk metode i PHP, som automatisk kaldes ved forsøg på at kalde en ikke-eksisterende eller utilgængelig statisk metode. Den tager navnet på den kaldte metode som første parameter og et array af de overførte argumenter som anden parameter.

Syntaks

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

Eksempel

Lad os oprette en klasse med metoden __callStatic og prøve at kalde en ikke-eksisterende statisk metode:

php<?php
class MyClass {
  public static function __callStatic($name, $args) {
    echo "Kaldte statisk metode '$name' med argumenter: ";
    print_r($args);
  }
}

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

Resultat af kodeudførelse:

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

Eksempel

Lad os implementere en simpel facade til at oprette objekter af forskellige typer:

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

Resultat af kodeudførelse:

phptrue

Se også

  • metoden __call,
    som opsamler kald til ikke-eksisterende objektmetoder
  • metoden __get,
    som opsamler henvendelser til ikke-eksisterende egenskaber