352 of 410 menu

Metóda __call

Metóda __call je magickou metódou v PHP, ktorá sa automaticky volá pri pokuse o prístup k neexistujúcej alebo nedostupnej metóde triedy. Prvým parametrom prijíma názov volanej metódy, druhým - pole argumentov.

Syntax

public function __call(string $name, array $arguments) { // implementácia }

Príklad

Vytvorme triedu s metódou __call, ktorá bude zachytávať všetky volania neexistujúcich metód:

<?php class Test { public function __call($name, $args) { echo "Volaná metóda: " . $name . "\n"; echo "Argumenty: "; print_r($args); } } $test = new Test(); $test->nonExistentMethod('a', 'b', 123); ?>

Výsledok vykonania kódu:

Volaná metóda: nonExistentMethod Argumenty: ['a', 'b', 123]

Príklad

Implementujme jednoduchý delegátor metód pomocou __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("Metóda $name nebola nájdená"); } } $math = new Math(); echo $math->add(2, 3); ?>

Výsledok vykonania kódu:

5

Pozrite tiež

  • metóda __callStatic,
    ktorá zachytáva volania statických metód
  • metóda __get,
    ktorá zachytáva prístupy k neexistujúcim vlastnostiam
Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť