352 of 410 menu

Metoda __call

Metoda __call është një metodë magjike në PHP, e cila thirret automatikisht kur përpiqemi të aksesojmë një metodë që nuk ekziston ose nuk është e aksesueshme në një klasë. Si parametër të parë ajo pranon emrin e metodës së thirrur, të dytin - një grup argumentesh.

Sintaksa

public function __call(string $name, array $arguments) { // implementimi }

Shembull

Le të krijojmë një klasë me metodën __call, e cila do të ndërpresë të gjitha thirrjet e metodave që nuk ekzistojnë:

<?php class Test { public function __call($name, $args) { echo "Metoda e thirrur: " . $name . "\n"; echo "Argumentet: "; print_r($args); } } $test = new Test(); $test->nonExistentMethod('a', 'b', 123); ?>

Rezultati i ekzekutimit të kodit:

Metoda e thirrur: nonExistentMethod Argumentet: ['a', 'b', 123]

Shembull

Le të implementojmë një delegues të thjeshtë metodash me ndihmën e __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("Metoda $name nuk u gjet"); } } $math = new Math(); echo $math->add(2, 3); ?>

Rezultati i ekzekutimit të kodit:

5

Shihni gjithashtu

  • metoda __callStatic,
    e cila ndërpret thirrjet e metodave statike
  • metoda __get,
    e cila ndërpret akseset në vetitë që nuk ekzistojnë
Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo