352 of 410 menu

วิธี __call

เมธอด __call เป็นเมธอดวิเศษใน PHP ซึ่งจะถูกเรียกอัตโนมัติเมื่อมีการพยายามเข้าถึงเมธอดของคลาสที่ไม่มีอยู่หรือไม่สามารถเข้าถึงได้ พารามิเตอร์แรกของมันรับชื่อของเมธอดที่ถูกเรียก พารามิเตอร์ที่สองรับอาร์เรย์ของอาร์กิวเมนต์

ไวยากรณ์

public function __call(string $name, array $arguments) { // การใช้งานจริง }

ตัวอย่าง

มาสร้างคลาสที่มีเมธอด __call ซึ่งจะดักจับการเรียกเมธอดทั้งหมดที่ไม่มีอยู่:

<?php class Test { public function __call($name, $args) { echo "เรียกเมธอด: " . $name . "\n"; echo "อาร์กิวเมนต์: "; print_r($args); } } $test = new Test(); $test->nonExistentMethod('a', 'b', 123); ?>

ผลลัพธ์จากการรันโค้ด:

เรียกเมธอด: nonExistentMethod อาร์กิวเมนต์: ['a', 'b', 123]

ตัวอย่าง

มาสร้างตัวส่งผ่านเมธอดอย่างง่ายด้วย __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("ไม่พบเมธอด $name"); } } $math = new Math(); echo $math->add(2, 3); ?>

ผลลัพธ์จากการรันโค้ด:

5

ดูเพิ่มเติม

  • เมธอด __callStatic,
    ซึ่งดักจับการเรียกเมธอดแบบสถิต
  • เมธอด __get,
    ซึ่งดักจับการเข้าถึงคุณสมบัติที่ไม่มีอยู่
ไทย
AfrikaansAzə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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ