Service Layer หรือชั้นบริการ
ใน Laravel นั้น Service Layer หรือ เลเยอร์บริการ เป็นรูปแบบสถาปัตยกรรมที่ใช้ในการห่อหุ้มตรรกะทางธุรกิจ ทำให้คอนโทรลเลอร์ "บาง หรือมีขนาดเล็ก" และมุ่งเน้นเฉพาะการจัดการคำขอและการตอบสนอง HTTP เท่านั้น เลเยอร์บริการทำหน้าที่เป็นตัวกลางระหว่างคอนโทรลเลอร์และเลเยอร์การเข้าถึงข้อมูล (ผ่าน Model หรือ Repository) ส่งเสริมการแยกส่วนการทำงานอย่างชัดเจน ปรับปรุงความสามารถในการทดสอบ และการนำโค้ดกลับมาใช้ใหม่ โดยในการใช้งานตัวคอนโทรลเลอร์ก็จะเรียกคำสั่งของ Service โดยการตรวจสอบต่างๆ จะอยู่ที่ Service ทั้งนีอาจจะยกเว้นส่วนของ Request Validation ชั้นแรกก่อน ตัวอย่างเช่น การสร้าง user เมือมีการลงทะเบียนที่อาจจะมีความซับซ้อน เช่นกรณีของ Multi-tenant application ก็อาจจะต้องทำหลายอย่างเช่น กำหนด Role, Subscription และสร้างฐานข้อมูล การทำงานพวกนี้จะอยู่ที่ service โดยคอนโทรลเลอร์จะเรียกแค่ registerUser(...) เท่านั้น
การใช้งาน Service ส่วนใหญ่หรือเรียกว่า Best practice เลยก็คือใช้งานผ่าน Interface ซึ่งเราต้อง Bind Interface กับ Class ของ Service ซึ่งเรียกว่า Concrete class ทำให้สามารถเปลี่ยน class ได้ตลอดเพราะ การใช้งานจะมีข้อตกลงแค่ระดับ methods ต่างๆ ผ่าน Interface แต่การ implement และจะ implement ยังไงก็แล้วแต่โปรแกรมเมอร์เลยครับ นอกจากนี้การเขียน test cases ก็จะทำได้ง่ายด้วย เนื่องจากมีการแยกส่วนกันชัดเจนระหว่าง controller, service และ model
![เริ่มต้นสร้าง Laravel Project [Laravel 8 EP01]](https://www.mycoding.academy/images/mycoding/tutorials/laravel/intro/laravel-logo-sm.png#joomlaImage://local-images/mycoding/tutorials/laravel/intro/laravel-logo-sm.png?width=800&height=832)

