ทำไมจึงต้องมีการผ่านค่า (passing value) ไปยัง class ต่าง ๆ ที่เรียกใช้งาน ถ้าใครที่เคยเรียน oop มา เราคงคุ้น ๆเรื่องการห่อหุ้ม (encapsulation) การทำ data hidding ซึ่งนั้นการทำ data hidding อีกวิธีการหนึ่งที่เราจะเข้าถึง private properties คือการ passing ผ่าน __construct นั้นเอง ซึ่งวันนี้จะมานำเสนอวิธีการส่งข้อมูลไปยัง class ต่างๆ ที่มี __construct รับค่าตัวแปรไว้ หรือทำ typing hit class ไว้ดังตัวอย่างต่อไปนี้
- เรียกใช้ผ่าน namespace class ตรง ๆ โดยใช้ function make ซึ่งเราสามารถเรียกใช้ App ของ laravel ได้สองแบบ คือผ่านทางคลาสหลักของ App หรืออีกทางคือผ่านทาง helper ได้ง่าย โดยวิธีนี่ไม่ต้องส่งค่าที่เป็น instant class ไปด้วยถึงแม้ว่าในตัว repository เองจะประกาศไว้ที่ __construct ก็ตามแต่ ข้อควรระวังคือ หากมี Argument ที่อยู่ใน __construct ควรจะส่งไปด้วย ถ้าไม่อย่างนั้นมันจะ error
- ผ่านทาง helper
- ผ่านทาง classs App
- สร้าง dependency injection ผ่านทาง service provider ของ laravel เราสามารถสร้าง service provider ขึ้นมาใหม่ได้ หรือสามารถใช้ที่มีอยู่แล้ว สิ่งที่จะได้คือ สามารถส่ง instant class ที่ repository สร้างขึ้นมาในจังหวะ __construct ดังตัวอย่างต่อไปนี้
0 ความคิดเห็น:
แสดงความคิดเห็น