Service Provider คืออะไร ?
ข้าคือผู้ให้บริการระบบของทุกสรรพสิ่ง
ServiceProvider
ใน Laravel มันเป็นส่วนหนึ่งของระบบที่เราสามารถจัดการระบบและสร้างสิ่งที่เรียกว่า "ผู้ให้บริการ" ให้กับเราได้
เช่น
บริการจัดการ container
บริการเตรียมสิ่งต่างๆก่อนการทำงานของระบบ หรือการกำหนดค่าต่างๆ
อื่นๆ
ซึ่ง มันเป็นส่วนหลักของการทำงานใน Laravel Application ของท่านทั้งหมด
ทุกครั้งที่ Laravel ถูกเรียกใช้งาน เจ้าตัว ServiceProvider ทั้งหมดจะถูกโหลดใช้งานทุกครั้ง เพื่อทำการลงทะเบียน หรือเตรียมชุดข้อมูลของท่าน เพื่อพร้อมสำหรับการทำงานของระบบของท่านต่อไป
นี่คือตัวอย่างไฟล์จาก app/Providers/AppServiceProvider.php
ซึ่งตัวไฟล์นี้มันจะถูกลงทะเบียนให้เรียกใช้งานที่ config/app.php
ท่านสามารถดูเพิ่มเติมได้ที่ https://laravel.com/docs/providers
เอาหละ เรามาลองยกตัวอย่างซักหน่อย
ตัวอย่างการใช้งาน ServiceProvider เบื้องต้น
เมื่อท่านต้องการให้ระบบของท่านมีการถือข้อมูลอะไรก็ตาม เช่น ค่าของ version ของระบบ หรือ ข้อมูลอื่นๆ ที่ท่านต้องการให้ระบบของท่านมีการเรียกใช้งานได้ง่ายๆ
อธิบายโค้ดด้านบนเบื้องต้นจาก Lifecycle ของ Laravel
ตอนที่ Laravel ถูกเรียกใช้งาน ตัว AppServiceProvider จะถูกโหลดขึ้นมา
ตอนที่ AppServiceProvider ถูกโหลดขึ้นมา ตัว
register()
จะถูกเรียกใช้งานใน
register()
ท่านสามารถลงทะเบียน หรือเตรียมข้อมูลต่างๆ ได้ในตัวอย่างด้านบน เราได้ลงทะเบียน
my-app-version
ให้กับ container ของ Laravel แล้วตอนที่มีการเรียกใช้งาน
my-app-version
จะได้ค่า1.0.0
กลับมา
เช่น ใน Controller หรือ Blade Template ท่านสามารถเรียกใช้งานได้ดังนี้
ข้อแตกต่างระหว่าง register()
และ boot()
register()
และ boot()
register()
จะถูกเรียกใช้งานก่อนที่ Laravel Application จะถูกโหลดขึ้นมา ซึ่งใช้สำหรับการลงทะเบียน หรือเตรียมข้อมูลต่างๆ ให้กับ container ของ Laravelboot()
จะถูกเรียกใช้งานหลังจากที่ Laravel Application ถูกโหลดขึ้นมาแล้ว ซึ่งใช้สำหรับการทำงานต่างๆ หลังจากที่ทุกอย่างถูกโหลดขึ้นมาแล้ว
Reference
Last updated