Metoden __callStatic

Metoden __callStatic är en magisk metod i PHP som automatiskt anropas vid försök att anropa en icke-existerande eller otillgänglig statisk metod. Den tar namnet på den anropade metoden som första parameter och en array med skickade argument som andra parameter.

Syntax

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

Exempel

Låt oss skapa en klass med metoden __callStatic och försöka anropa en icke-existerande statisk metod:

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

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

Resultat av kodkörning:

phpAnropade statisk metod 'nonExistentMethod' med argument: [1, 2, 3]

Exempel

Låt oss implementera en enkel fasad för att skapa objekt av olika 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("Metoden $name hittades inte");
  }
}

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

Resultat av kodkörning:

phptrue

Se även

  • metoden __call,
    som fångar upp anrop till icke-existerande objektmetoder
  • metoden __get,
    som fångar upp åtkomst till icke-existerande egenskaper