Home แนะนำแม่เหล็ก laravel ทำงานอย่างไร เมื่อเรียก property ของ class ที่ไม่มีอยู่ และคืนค่ามาเป็น null

laravel ทำงานอย่างไร เมื่อเรียก property ของ class ที่ไม่มีอยู่ และคืนค่ามาเป็น null

by DIYmagnet

Laravel ใช้คุณสมบัติของ PHP เรียกว่า “Magic Methods” ในการจัดการกับการเข้าถึง properties หรือ methods ที่ไม่มีอยู่จริงใน class. สอง magic methods หลักที่เกี่ยวข้องในสถานการณ์นี้คือ __get() และ __set(). วิธีการทำงานนี้ช่วยให้ Laravel สามารถเสนอคุณสมบัติอัตโนมัติ เช่น dynamic properties หรือ late static binding ได้.

เมื่อคุณพยายามเข้าถึง property ของ object ใน Laravel ที่ไม่ได้ถูกกำหนดไว้ภายใน class ดังกล่าว, Laravel จะทำการเรียกใช้ method __get() โดยอัตโนมัติ. นี่คือวิธีที่ PHP อนุญาตให้ทำการ intercept การเข้าถึง property ที่ไม่มีอยู่. Laravel ใช้ประโยชน์จากคุณสมบัตินี้เพื่อตรวจสอบว่ามีการเข้าถึง attribute หรือความสัมพันธ์ที่โหลดผ่าน Eloquent ORM หรือไม่, หรือการเข้าถึงค่าที่ถูกเก็บไว้ใน array หรือ collection ที่เกี่ยวข้อง.

หาก property ที่เรียกไม่มีอยู่จริง, Laravel มักจะคืนค่า null เนื่องจากมีการตรวจสอบภายใน method __get() ว่ามีการกำหนดค่าหรือการเข้าถึงความสัมพันธ์ที่มีการกำหนดไว้หรือไม่. ถ้าไม่พบ, Laravel จึงคืนค่า null กลับมาเป็นการแสดงว่าไม่มี property นั้นๆ.

นอกจากนี้, Laravel ยังใช้คุณสมบัติอื่นๆ เช่น Accessors และ Mutators ใน Eloquent ORM, ซึ่งเป็นวิธีการกำหนด custom logic ในการอ่านหรือเขียนค่าของ attributes ของ model. Accessor ช่วยให้คุณสามารถจัดการกับการเข้าถึงค่าของ attribute ที่เรียก, และให้ความสามารถในการคืนค่าที่แตกต่างออกไปจากค่าที่เก็บอยู่ในฐานข้อมูลหรือค่าเริ่มต้น.

เพื่อรับมือกับการเข้าถึง property ที่ไม่มีอยู่และต้องการคืนค่าที่ไม่ใช่ null, คุณสามารถใช้ Accessors ใน Eloquent model ของคุณเพื่อกำหนดค่าที่จะถูกคืนกลับเมื่อมีการเข้าถึง property นั้น.

บทความที่เกี่ยวข้อง

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More