🔹 เกริ่นนำ
การสร้าง Custom Package คือการแยกโค้ดออกจากโปรเจกต์หลักให้เป็นโมดูลที่สามารถนำกลับมาใช้ซ้ำได้ หรือแจกจ่ายให้ผู้อื่นติดตั้งผ่าน Composer ได้ Package แบบ custom เหมาะสำหรับการรวม utility, component หรือ service ที่ใช้ร่วมกันหลายโปรเจกต์
บทนี้จะแนะนำการสร้าง package ขั้นพื้นฐานใน Laravel ที่สามารถใช้ได้ทั้งแบบ local และเผยแพร่ผ่าน Packagist
🔸 โครงสร้างเบื้องต้นของ Custom Package
packages/
└── your-vendor/
└── your-package/
├── src/
│ └── YourPackageServiceProvider.php
├── composer.json
└── routes/web.php (ถ้ามี)
🔸 ตัวอย่างการตั้งค่า composer.json
ของ package
{
"name": "your-vendor/your-package",
"description": "Custom Laravel Package",
"autoload": {
"psr-4": {
"YourVendor\\YourPackage\\": "src/"
}
},
"extra": {
"laravel": {
"providers": [
"YourVendor\\YourPackage\\YourPackageServiceProvider"
]
}
}
}
🔸 สร้าง Service Provider
namespace YourVendor\YourPackage;
use Illuminate\Support\ServiceProvider;
class YourPackageServiceProvider extends ServiceProvider
{
public function boot()
{
// publish routes, views, configs
}
public function register()
{
// bind service to container
}
}
🔸 การเพิ่ม package เข้าโปรเจกต์หลัก
ใน composer.json
:
"repositories": [
{
"type": "path",
"url": "packages/your-vendor/your-package"
}
],
จากนั้น:
composer require your-vendor/your-package
💡 ใช้
php artisan vendor:publish
เพื่อเผยแพร่ resource จาก package ได้