Metodi __callStatic

Metodi __callStatic on maaginen metodi PHP:ssä, joka kutsutaan automaattisesti, kun yritetään kutsua olematonta tai käyttökelvotonta staattista metodia. Se saa ensimmäisenä parametrina kutsutun metodin nimen ja toisena parametrina lähetettyjen argumenttien taulukon.

Syntaksi

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

Esimerkki

Luodaan luokka metodilla __callStatic ja yritetään kutsua olematonta staattista metodia:

php<?php
class MyClass {
  public static function __callStatic($name, $args) {
    echo "Kutsuttiin staattista metodia '$name' argumenteilla: ";
    print_r($args);
  }
}

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

Koodin suorituksen tulos:

phpKutsuttiin staattista metodia 'nonExistentMethod' argumenteilla: [1, 2, 3]

Esimerkki

Toteutetaan yksinkertainen fasadi erityyppisten objektien luomiseen:

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("Metodia $name ei löytynyt");
  }
}

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

Koodin suorituksen tulos:

phptrue

Katso myös

  • metodi __call,
    joka sieppaa objektin olematonten metodien kutsut
  • metodi __get,
    joka sieppaa viittaukset olematomiin ominaisuuksiin