Metode __call
Die metode __call is 'n magiese metode in PHP wat outomaties geaktiveer word wanneer daar gepoog word om na 'n nie-bestaande of ontoeganklike metode van 'n klas te verwys. Dit neem die naam van die opgeroep metode as die eerste parameter, en 'n array van argumente as die tweede.
Sintaksis
public function __call(string $name, array $arguments) {
// implementering
}
Voorbeeld
Kom ons skep 'n klas met 'n metode __call wat alle oproepe na nie-bestaande metodes sal onderskep:
<?php
class Test {
public function __call($name, $args) {
echo "Opgeroep metode: " . $name . "\n";
echo "Argumente: ";
print_r($args);
}
}
$test = new Test();
$test->nieBestaandeMetode('a', 'b', 123);
?>
Resultaat van die kode-uitvoering:
Opgeroep metode: nieBestaandeMetode
Argumente: ['a', 'b', 123]
Voorbeeld
Kom ons implementeer 'n eenvoudige metode-delegeerder met behulp van __call:
<?php
class Sakrekenaar {
public function tel($a, $b) {
return $a + $b;
}
}
class Wiskunde {
private $sakrekenaar;
public function __construct() {
$this->sakrekenaar = new Sakrekenaar();
}
public function __call($name, $args) {
if (method_exists($this->sakrekenaar, $name)) {
return call_user_func_array(
[$this->sakrekenaar, $name],
$args
);
}
throw new Exception("Metode $name nie gevind nie");
}
}
$wiskunde = new Wiskunde();
echo $wiskunde->tel(2, 3);
?>
Resultaat van die kode-uitvoering:
5
Sien ook
-
metode
__callStatic,
wat oproepe na statiese metodes onderskep -
metode
__get,
wat verwysings na nie-bestaande eienskappe onderskep