⊗ppOpMgTS 87 of 107 menu

วิธีการมหัศจรรย์ __toString ใน OOP ของ PHP

วิธีการมหัศจรรย์แรกที่เราจะเรียนรู้ชื่อว่า __toString มันถูกเรียกเมื่อพยายามแปลงอินสแตนซ์ของคลาสเป็นสตริง ลองมาทำความเข้าใจกันว่านี่หมายความว่าอย่างไร สมมติว่าเรามีคลาส User ดังนี้:

<?php class User { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

ลองสร้างอ็อบเจกต์ของคลาสนี้:

<?php $user = new User('john', 25); ?>

ทีนี้ลองพยายามแสดงอ็อบเจกต์ที่สร้างผ่าน echo:

<?php $user = new User('john', 25); echo $user; ?>

การพยายามแสดงอ็อบเจกต์ผ่าน echo นี่คือการแปลงเป็นสตริงนั่นเอง ในกรณีนี้ PHP จะแสดงข้อผิดพลาด เพราะโดยปกติแล้วอ็อบเจกต์จะไม่ถูกแปลงเป็นสตริงโดยง่าย

เพื่อที่จะลบข้อผิดพลาด เราต้องบอก PHP อย่างชัดเจนว่าควรทำอย่างไรเมื่อพยายามแปลงอ็อบเจกต์เป็นสตริง สำหรับสิ่งนี้เองที่มีวิธีการมหัศจรรย์ __toString

หากในโค้ดของคลาสเราสร้างเมธอดดังกล่าว ผลลัพธ์ของเมธอดนี้ (นั่นคือสิ่งที่มันคืนค่าผ่าน return) จะเป็นตัวแทนของอ็อบเจกต์ในรูปแบบสตริง

สมมติว่าเราต้องการให้เมื่อพยายามแสดงอ็อบเจกต์ผ่าน echo แล้วแสดงชื่อผู้ใช้ออกมา ดังนั้นเรามาสร้างเมธอด __toString และคืนค่าคุณสมบัติ name ในนั้น:

<?php class User { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } // ดำเนินการเมธอดที่ระบุ: public function __toString() { return $this->name; } public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

ลองทดสอบ:

<?php $user = new User('john', 25); echo $user; // จะแสดง 'john' - ใช้งานได้ทั้งหมด! ?>

สร้างคลาส User ซึ่งมีคุณสมบัติ name และ surn ทำให้เมื่อแสดงอ็อบเจกต์ผ่าน echo บนหน้าจอแล้ว แสดงสตริงที่มีชื่อและนามสกุลของผู้ใช้

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