__call әдісі
__call әдісі PHP-тегі сиқырлы әдіс болып табылады, ол кластағы жоқ немесе қол жетімсіз әдіске жүгіну әрекеті кезінде автоматты түрде шақырылады. Ол бірінші параметр ретінде шақырылатын әдістің атауын, екінші параметр ретінде аргументтер жиынын қабылдайды.
Синтаксис
public function __call(string $name, array $arguments) {
// іске асыру
}
Мысал
__call әдісі бар класс жасайық, ол барлық жоқ әдістердің шақыруларын қарайды:
<?php
class Test {
public function __call($name, $args) {
echo "Шақырылған әдіс: " . $name . "\n";
echo "Аргументтер: ";
print_r($args);
}
}
$test = new Test();
$test->nonExistentMethod('a', 'b', 123);
?>
Кодты орындау нәтижесі:
Шақырылған әдіс: nonExistentMethod
Аргументтер: ['a', 'b', 123]
Мысал
__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("$name әдісі табылмады");
}
}
$math = new Math();
echo $math->add(2, 3);
?>
Кодты орындау нәтижесі:
5
Сондай-ақ қараңыз
-
__callStaticәдісі,
ол статикалық әдістердің шақыруларын қарайды -
__getәдісі,
ол жоқ сипаттарға жүгінулерді қарайды