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
public 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
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:
Called static method 'nonExistentMethod' with arguments: [1, 2, 3]
Eksempel
Lad os implementere en simpel facade til at oprette objekter af forskellige typer:
<?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:
true