352 of 410 menu

A __call metódus

A __call metódus egy mágikus metódus a PHP-ban, amely automatikusan meghívódik, amikor egy nem létező vagy nem elérhető osztálymetódushoz próbálnak hozzáférni. Az első paramétere a hívott metódus neve, a második pedig az argumentumok tömbje.

Szintaxis

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

Példa

Hozzunk létre egy osztályt egy __call metódussal, amely minden nem létező metódus hívását elkapja:

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

A kód végrehajtásának eredménye:

Meghívott metódus: nonExistentMethod Argumentumok: ['a', 'b', 123]

Példa

Valósítsunk meg egy egyszerű metódus delegátort a __call segítségével:

<?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("A(z) $name metódus nem található"); } } $math = new Math(); echo $math->add(2, 3); ?>

A kód végrehajtásának eredménye:

5

Lásd még

  • a __callStatic metódus,
    amely statikus metódushívásokat kap el
  • a __get metódus,
    amely nem létező tulajdonságok elérését kapja el
Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás