จัดการโมดูล Laravel อย่างเป็นระบบด้วย nWidart/laravel-modules
หากคุณเป็นนักพัฒนา Laravel ที่ต้องการจัดการโครงสร้างของโปรเจกต์ให้เป็นระบบมากขึ้น โดยเฉพาะอย่างยิ่งในโปรเจกต์ขนาดใหญ่ การใช้แพ็กเกจ nWidart/laravel-modules คือทางเลือกที่น่าสนใจที่คุณไม่ควรมองข้าม
nWidart/laravel-modules คืออะไร?
nWidart/laravel-modules คือแพ็กเกจเสริมของ Laravel ที่ช่วยให้คุณสามารถสร้างและจัดการ “โมดูล” (Modules) ได้อย่างเป็นระบบ คล้ายกับแนวคิดของ Microservices แต่ยังคงอยู่ภายใต้ Laravel เดียวกัน เหมาะอย่างยิ่งสำหรับระบบที่มีหลายฟีเจอร์ และต้องการแยกความรับผิดชอบของโค้ดออกจากกันอย่างชัดเจน
ทำไมต้องใช้ nWidart/laravel-modules?
- จัดระเบียบโค้ดได้ง่ายขึ้น
คุณสามารถแยกแต่ละฟีเจอร์ให้อยู่ในโมดูลของตัวเอง เช่น โมดูลผู้ใช้, โมดูลสินค้า, โมดูลคำสั่งซื้อ เป็นต้น - ปรับปรุงความสามารถในการดูแลระบบ
การแก้ไขหรืออัปเดตแต่ละฟีเจอร์จะไม่ส่งผลกระทบต่อระบบทั้งหมด - ทำงานเป็นทีมได้ง่ายขึ้น
ทีมพัฒนาหลายทีมสามารถดูแลโมดูลของตัวเองได้โดยไม่ทับซ้อนกัน
การติดตั้ง 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+ อาจต้องตรวจสอบว่าเวอร์ชันของแพ็กเกจรองรับหรือไม่