⊗ppOpMgGP 88 of 107 menu

การเข้าถึงคุณสมบัติผ่านเวทมนตร์ใน OOP ใน PHP

เมธอดเวทมนตร์ถัดไปที่เราจะวิเคราะห์ร่วมกัน เรียกว่า __get เมธอดนี้จะทำงานเมื่อพยายามอ่านค่า ของคุณสมบัติแบบ private หรือ protected

หากนำเมธอด __get ไป implement ในคลาสใดๆ การอ้างอิงถึงคุณสมบัติที่ไม่มีอยู่ หรือคุณสมบัติที่ถูกซ่อนไว้ทั้งหมดจะถูกประมวลผล โดยเมธอดนี้

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

คงยังไม่ค่อยเข้าใจนักว่ามันทำงานอย่างไร ดังนั้นมาดูตัวอย่างเชิงปฏิบัติกัน สมมติว่าเรามีคลาส Test แบบนี้ ที่มีคุณสมบัติแบบ private และ public:

<?php class Test { public $prop1 = 1; // คุณสมบัติสาธารณะ private $prop2 = 2; // คุณสมบัติส่วนตัว } ?>

ลองเพิ่มเมธอดเวทมนตร์ __get ลงในคลาสของเรา ซึ่งเริ่มแรกจะเพียงแค่ ส่งคืนชื่อของคุณสมบัติที่ถูกอ้างอิงถึง:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // แค่ส่งคืนชื่อคุณสมบัติ } } ?>

มาทดสอบการทำงานของเมธอดเวทมนตร์ที่สร้างขึ้น ลองอ้างอิงถึงคุณสมบัติสามประเภท: ถึง คุณสมบัติสาธารณะ ถึงคุณสมบัติส่วนตัว และ ถึงคุณสมบัติที่ไม่มีอยู่:

<?php $test = new Test; // อ้างอิงถึงคุณสมบัติสาธารณะ: echo $test->prop1; // จะแสดง 1 - ซึ่งคือค่าของคุณสมบัติ // อ้างอิงถึงคุณสมบัติส่วนตัว: echo $test->prop2; // จะแสดง 'prop2' - ชื่อคุณสมบัติ // อ้างอิงถึงคุณสมบัติที่ไม่มีอยู่: echo $test->prop3; // จะแสดง 'prop3' - ชื่อคุณสมบัติ ?>

อย่างที่คุณเห็น เมธอดเวทมนตร์ของเราตอบสนอง ต่อการอ้างอิงถึงคุณสมบัติส่วนตัวและคุณสมบัติที่ไม่มีอยู่ แต่ไม่สนใจการอ้างอิงถึงคุณสมบัติสาธารณะ - พวกมันทำงานเหมือนเดิม

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