Metoden __callStatic

Metoden __callStatic er en magisk metode i PHP som automatisk kalles ved forsøk på å kalle en ikke-eksisterende eller utilgjengelig statisk metode. Den tar navnet på den aktuelle metoden som første parameter, og en matrise med de overførte argumentene som andre parameter.

Syntaks

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

Eksempel

La oss opprette en klasse med metoden __callStatic og prøve å kalle en ikke-eksisterende statisk metode:

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

Resultat av kjøring av koden:

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

Eksempel

La oss implementere en enkel fasade for å opprette objekter av forskjellige 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 av kjøring av koden:

phptrue

Se også

  • metoden __call,
    som avlytter kall til ikke-eksisterende objektmetoder
  • metoden __get,
    som avlytter tilgang til ikke-eksisterende egenskaper