Kaedah __call
Kaedah __call ialah kaedah ajaib dalam PHP yang dipanggil secara automatik apabila cuba mengakses kaedah kelas yang tidak wujud atau tidak boleh diakses. Parameter pertamanya menerima nama kaedah yang dipanggil, parameter kedua - tatasusunan argumen.
Sintaks
public function __call(string $name, array $arguments) {
// pelaksanaan
}
Contoh
Mari buat kelas dengan kaedah __call yang akan menangkap semua panggilan kepada kaedah yang tidak wujud:
<?php
class Test {
public function __call($name, $args) {
echo "Kaedah yang dipanggil: " . $name . "\n";
echo "Argumen: ";
print_r($args);
}
}
$test = new Test();
$test->nonExistentMethod('a', 'b', 123);
?>
Keputusan pelaksanaan kod:
Called method: nonExistentMethod
Arguments: ['a', 'b', 123]
Contoh
Mari laksanakan pendelegat kaedah mudah menggunakan __call:
<?php
class Calculator {
public function add($a, $b) {
return $a + $b;
}
}
class Math {
private $calculator;
public function __construct() {
$this->calculator = new Calculator();
}
public function __call($name, $args) {
if (method_exists($this->calculator, $name)) {
return call_user_func_array(
[$this->calculator, $name],
$args
);
}
throw new Exception("Method $name not found");
}
}
$math = new Math();
echo $math->add(2, 3);
?>
Keputusan pelaksanaan kod:
5
Lihat juga
-
kaedah
__callStatic,
yang menangkap panggilan kaedah statik -
kaedah
__get,
yang menangkap akses kepada sifat yang tidak wujud