352 of 410 menu

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
Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp