Mbinu __call
Mbinu __call ni mbinu ya kichawi katika PHP, ambayo huitwa kiotomatiki wakati wa kujaribu kumtumia mbinu isiyopo au isiyopatikana ya darasa. Inakubua parameta ya kwanza kama jina la mbinu iliyotumiwa, ya pili - safu ya hoja.
Syntax
public function __call(string $name, array $arguments) {
// utekelezaji
}
Mfano
Tutundue darasa lenye mbinu __call, ambayo itakamata wito wote wa mbinu zisizopo:
<?php
class Test {
public function __call($name, $args) {
echo "Mbinu iliyotumiwa: " . $name . "\n";
echo "Hoja: ";
print_r($args);
}
}
$test = new Test();
$test->nonExistentMethod('a', 'b', 123);
?>
Matokeo ya kutekeleza kodi:
Mbinu iliyotumiwa: nonExistentMethod
Hoja: ['a', 'b', 123]
Mfano
Tutekeleze kiweka wito rahisi wa mbinu kwa kutumia __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("Mbinu $name haipatikani");
}
}
$math = new Math();
echo $math->add(2, 3);
?>
Matokeo ya kutekeleza kodi:
5
Angalia pia
-
mbinu
__callStatic,
ambayo inakamata wito wa mbinu tuli -
mbinu
__get,
ambayo inakamata marejeo kwa sifa zisizopo