DEV Community

Cover image for สร้าง PHP pacakge สำหรับ Composer
Atthaphon Urairat
Atthaphon Urairat

Posted on • Updated on

สร้าง PHP pacakge สำหรับ Composer

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

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

ขั้นตอน

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

1) สร้าง composer.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 หรือ Bitbucket จากนั้นก็ push โปรเจ็คขึ้นไป หรือถ้าหากว่าสร้างไว้แล้วก็คูลเลยครับ

3) เพิ่ม Repository ของเราใน Packagist เพิ่ม Repository url เพื่อเช็คและกด Submit ได้เลยครับ

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

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

Discussion (0)