352 of 410 menu

Kaedah __call

Kaedah __call ialah kaedah ajaib dalam PHP yang dipanggil secara automatik apabila cuba mengakses kaedah kelas yang tidak wujud atau tidak boleh diakses. Parameter pertamanya menerima nama kaedah yang dipanggil, parameter kedua - tatasusunan argumen.

Sintaks

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

Contoh

Mari buat kelas dengan kaedah __call yang akan menangkap semua panggilan kepada kaedah yang tidak wujud:

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

Keputusan pelaksanaan kod:

Called method: nonExistentMethod Arguments: ['a', 'b', 123]

Contoh

Mari laksanakan pendelegat kaedah mudah menggunakan __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("Method $name not found"); } } $math = new Math(); echo $math->add(2, 3); ?>

Keputusan pelaksanaan kod:

5

Lihat juga

  • kaedah __callStatic,
    yang menangkap panggilan kaedah statik
  • kaedah __get,
    yang menangkap akses kepada sifat yang tidak wujud
Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak