จัดการโมดูล Laravel อย่างเป็นระบบด้วย nWidart/laravel-modules

laravel-modules

จัดการโมดูล Laravel อย่างเป็นระบบด้วย nWidart/laravel-modules

หากคุณเป็นนักพัฒนา Laravel ที่ต้องการจัดการโครงสร้างของโปรเจกต์ให้เป็นระบบมากขึ้น โดยเฉพาะอย่างยิ่งในโปรเจกต์ขนาดใหญ่ การใช้แพ็กเกจ nWidart/laravel-modules คือทางเลือกที่น่าสนใจที่คุณไม่ควรมองข้าม

nWidart/laravel-modules คืออะไร?

nWidart/laravel-modules คือแพ็กเกจเสริมของ Laravel ที่ช่วยให้คุณสามารถสร้างและจัดการ “โมดูล” (Modules) ได้อย่างเป็นระบบ คล้ายกับแนวคิดของ Microservices แต่ยังคงอยู่ภายใต้ Laravel เดียวกัน เหมาะอย่างยิ่งสำหรับระบบที่มีหลายฟีเจอร์ และต้องการแยกความรับผิดชอบของโค้ดออกจากกันอย่างชัดเจน

ทำไมต้องใช้ nWidart/laravel-modules?

  1. จัดระเบียบโค้ดได้ง่ายขึ้น
    คุณสามารถแยกแต่ละฟีเจอร์ให้อยู่ในโมดูลของตัวเอง เช่น โมดูลผู้ใช้, โมดูลสินค้า, โมดูลคำสั่งซื้อ เป็นต้น
  2. ปรับปรุงความสามารถในการดูแลระบบ
    การแก้ไขหรืออัปเดตแต่ละฟีเจอร์จะไม่ส่งผลกระทบต่อระบบทั้งหมด
  3. ทำงานเป็นทีมได้ง่ายขึ้น
    ทีมพัฒนาหลายทีมสามารถดูแลโมดูลของตัวเองได้โดยไม่ทับซ้อนกัน

การติดตั้ง nWidart/laravel-modules

composer require nwidart/laravel-modules

จากนั้นให้รันคำสั่งต่อไปนี้เพื่อเผยแพร่ไฟล์ config:

php artisan vendor:publish --provider="NwidartModulesLaravelModulesServiceProvider"

การสร้างโมดูลใหม่ใน Laravel

สร้างโมดูลใหม่ด้วยคำสั่ง:

php artisan module:make Blog

ระบบจะสร้างโครงสร้างโฟลเดอร์ Modules/Blog ซึ่งมีทั้ง Controller, Model, View, Route และอื่น ๆ พร้อมใช้งาน

การเรียกใช้งาน Route ของโมดูล

Route จะถูกจัดเก็บใน Modules/Blog/Routes/web.php
Laravel จะโหลด route เหล่านี้โดยอัตโนมัติผ่านระบบของแพ็กเกจ

การใช้งานร่วมกับ MVC

โครงสร้างของแต่ละโมดูลจะมีครบถ้วนตามแนวคิด MVC:

  • Controllers: อยู่ใน Modules/Blog/Http/Controllers
  • Models: อยู่ใน Modules/Blog/Entities
  • Views: อยู่ใน Modules/Blog/Resources/views

สามารถเรียกใช้ View ด้วยรูปแบบ:

return view('blog::index');

ข้อควรระวัง

  • อย่าลืมจัดการ namespace ให้ถูกต้องเมื่อเรียกใช้ class ข้ามโมดูล
  • หากใช้ Laravel 11+ อาจต้องตรวจสอบว่าเวอร์ชันของแพ็กเกจรองรับหรือไม่