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

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 นั้น.

Related posts

ในระบบ network คำว่า wan ย่อมาจากคำว่าอะไร

NdFeB Magnet หรือ แม่เหล็กนีโอดิเมียม เป็นชื่อเรียกนึงของแม่เหล็กแรงสูง

Neodymium Magnet เส้นผ่านศูนย์กลาง 6 มิลลิเมตร หนา 3 มิลลิเมตร บริษัทขายแม่เหล็ก

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