353 of 410 menu

วิธี __callStatic

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

ไวยากรณ์

public static function __callStatic(string $name, array $arguments);

ตัวอย่าง

มาสร้างคลาสที่มีเมธอด __callStatic และลองเรียกใช้เมธอดสถิตที่ไม่มีอยู่:

<?php class MyClass { public static function __callStatic($name, $args) { echo "Called static method '$name' with arguments: "; print_r($args); } } MyClass::nonExistentMethod(1, 2, 3); ?>

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

Called static method 'nonExistentMethod' with arguments: [1, 2, 3]

ตัวอย่าง

มาใช้สร้างฟาซาด (facade) อย่างง่ายสำหรับการสร้างออบเจ็กต์ประเภทต่างๆ:

<?php class Factory { public static function __callStatic($name, $args) { if (strpos($name, 'create') === 0) { $className = substr($name, 6); return new $className(...$args); } throw new Exception("Method $name not found"); } } class User {} $user = Factory::createUser(); var_dump($user instanceof User); ?>

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

true

ดูเพิ่มเติม

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