Μέθοδος __callStatic
Η μέθοδος __callStatic είναι μια μαγική μέθοδος στην PHP, η οποία καλείται αυτόματα κατά την προσπάθεια κλήσης μιας μη υπάρχουσας ή μη προσβάσιμης στατικής μεθόδου. Ως πρώτη παράμετρο δέχεται το όνομα της μεθόδου που καλείται, ως δεύτερη - έναν πίνακα με τα ορίσματα που μεταβιβάστηκαν.
Σύνταξη
public static function __callStatic(string $name, array $arguments);
Παράδειγμα
Ας δημιουργήσουμε μια κλάση με τη μέθοδο __callStatic και ας προσπαθήσουμε να καλέσουμε μια μη υπάρχουσα στατική μέθοδο:
<?php
class MyClass {
public static function __callStatic($name, $args) {
echo "Κλήθηκε στατική μέθοδος '$name' με ορίσματα: ";
print_r($args);
}
}
MyClass::nonExistentMethod(1, 2, 3);
?>
Αποτέλεσμα εκτέλεσης κώδικα:
Called static method 'nonExistentMethod' with arguments: [1, 2, 3]
Παράδειγμα
Ας υλοποιήσουμε ένα απλό πρόσοψη (facade) για δημιουργία αντικειμένων διαφορετικών τύπων:
<?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("Μέθοδος $name δεν βρέθηκε");
}
}
class User {}
$user = Factory::createUser();
var_dump($user instanceof User);
?>
Αποτέλεσμα εκτέλεσης κώδικα:
true