สร้าง PHP pacakge สำหรับ Composer
Tags: php, composer, github, ไทย
Published: 2019-06-29 03:09:51

---
title: สร้าง PHP pacakge สำหรับ Composer
published: true
description: เรียนรู้ขั้นตอนการสร้าง php pacekage และ เพิ่มเข้าไปใน packagist.org เพื่อทำให้ package ของเราสามารถ install โดย Composer ได้
tags: php, composer, github, ไทย
cover_image: https://thepracticaldev.s3.amazonaws.com/i/yvdtzqpmlflsewmpizde.jpg
---

เมื่อเราสามารถสร้าง Repository ไม่ว่าจะใน Github หรือ Bitbucket สำหรับ PHP code เป็นที่เรียบร้อยแล้ว จากนั้นเราก็สามารถที่จะใช้ `git clone` เพื่อดึง Project repository ที่เราได้สร้างไว้เพื่อเอามาใช้กับโปรเจ็คอื่นๆ ได้โดยง่าย แต่เพื่อที่จะให้ง่ายไปยิ่งกว่านั้น และเพื่อซัพพอร์ต Package management ซึ่งถูกใช้กันอย่างแพร่หลายในปัจจุบัน ถ้าหากว่า Repository ที่เราสร้างไว้ไม่ซัพพอร์ตมันแล้วล่ะก็ มันก็คงจะดูไม่ค่อยคูลสักเท่าไหร่ใช่ไหมล่ะครับ 😋

ด้วยเหตุฉนั้น จึงเป็นสาเหตุที่ทำให้เราต้อง เพิ่ม PHP Repository ของเราเข้าไปใน [Packagist](https://packagist.org/) เพื่อทำให้ Repository คูลๆ ของเราสามารถเรียกใช้งานด้วย `composer` ได้ครับ อย่างเช่น `composer require yourname/coolcool`

# ขั้นตอน

เรามาเริ่มกันเลยดีกว่าครับ ด้วยความหวังว่าจะมีใครสักคนเห็นว่าเราพยายามหรือไม่ได้ทำงานแบบขอไปที "อู้ว~ แพคเกจของคนนี้เขาใช้ composer ได้ด้วย ดีดี เดี๋ยวกดดาวให้สักหน่อย" ในใจของเราคงหวังไว้อย่างนี้ใช่ไหมครับ อิอิ หรือแม้ว่าเพื่อนๆ ที่เข้ามาอ่านจะไม่ได้คิดแบบนี้ แต่ผมว่าคงมีใครสักคนล่ะที่คิดประมาณนี้ อย่างน้อยก็ผมคนนึงล่ะที่หวังไว้แบบนี้ เพราะอยากได้ดาวกับเขาบ้าง ฮ่าๆ เข้าเรื่องครับ มาเริ่มกันเลยดีกว่า

1) สร้าง `composer.json` ไฟล์ในโปรเจ็คที่เราสร้าง

```json
{
    "name": "uatthaphon/g-crawler",
    "description": "A simple php Web Scraper that wrap up Guzzle and DomCrawler",
    "keywords": ["scrap", "dom-crawler", "guzzle"],
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "Atthaphon Urairat",
            "email": "u.atthaphon@gmail.com",
            "homepage": "https://atthaphon.urairat.com/"
        }
    ],
    "require": {
        "php": "^7.2",
        "symfony/dom-crawler": "^4.2",
        "guzzlehttp/guzzle": "^6.3",
        "symfony/css-selector": "^4.2"
    },
    "require-dev": {
        "phpunit/phpunit": "^8.1"
    },
    "autoload": {
        "psr-4": {
            "GCrawler\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "GCrawler\\Tests\\": "tests/"
        }
    }
}

```

2) สร้าง Repository ใน [Github](https://github.com/new) หรือ [Bitbucket](https://bitbucket.org/repo/create) จากนั้นก็ push โปรเจ็คขึ้นไป หรือถ้าหากว่าสร้างไว้แล้วก็คูลเลยครับ

3) เพิ่ม Repository ของเราใน [Packagist](https://packagist.org/packages/submit) เพิ่ม Repository url เพื่อเช็คและกด Submit ได้เลยครับ

4) หลังจากที่ Packagist เพิ่มโปรเจ็คเราเข้าไปในระบบเป็นที่เรียบร้อยแล้วเราก็จะสามารถใช้ `composer require yourname/coolcool` ได้แล้วครับ

สุดท้ายนี้ใครที่กำลังทำ scrap ข้อมูลด้วย php อยู่ ก็สามารถลองดึง Repository [g-crawler](https://github.com/uatthaphon/g-crawler) ของผมมาใช้ได้นะครับ เป็น โปรเจ็ค Wrap up `symfony/dom-crawler`,`symfony/css-selector` และ `guzzlehttp/guzzle` ที่ทำไว้เพื่อให้เรียกใช้งานได้ง่าย ไม่ต้องไปเพิ่มโปรเจ็คเองเยอะแยะและทำให้ Config ง่ายและเร็วขึ้นครับ ผมหวังว่าบทความและ Repo ของผมคงจะมีประโยชน์สำหรับคนอื่นบ้างไม่มากก็น้อยนะครับ