Dev to webs {Coding…}

ร บทเรียนฟรีด้านการพัฒนาซอฟต์แวร์ ที่ครอบคลุมเนื้อหาหลากหลาย ตั้งแต่การเขียนโค้ดพื้นฐานไปจนถึงเทคนิคขั้นสูง

บทที่ 2: การสร้าง Custom Package

🔹 เกริ่นนำ

การสร้าง 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 ได้