Metode __callStatic

Metode __callStatic adalah metode ajaib (magic method) dalam PHP yang secara otomatis dipanggil ketika ada upaya untuk memanggil metode statis yang tidak ada atau tidak dapat diakses. Parameter pertamanya menerima nama metode yang dipanggil, parameter kedua menerima array argumen yang diteruskan.

Sintaks

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

Contoh

Mari buat kelas dengan metode __callStatic dan coba panggil metode statis yang tidak ada:

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

Hasil eksekusi kode:

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

Contoh

Mari implementasikan fasad sederhana untuk membuat objek berbagai tipe:

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

Hasil eksekusi kode:

phptrue

Lihat Juga

  • metode __call,
    yang mengintercept panggilan ke metode objek yang tidak ada
  • metode __get,
    yang mengintercept akses ke properti yang tidak ada