หลังจากที่ห่างหายจากเขียน blog ไปนานเกือบปี จริงไม่มีเวลาก็เป็นข้ออ้างอย่างหนึ่งที่ผมพยามสร้างเป็นข้อแก้ตัว แต่ก็ช่างเหอะพอดีช่วงนี้มีเวลาว่างเพิ่มขึ้นนิดหน่อยก็เลยได้ศึกษาเรื่อง composer ต่อยอดจากการเป็นผู้ใช้งานทั่วเป็นประเภท "ผู้สร้าง package" เพื่อแจกชาวบ้าน
สำหรับคนที่จะอ่านบนความนี้ต่อ ต้องรู้เรื่องต่อไปนี้
- composer
- php
- namespace
- github
วงจรการทำงาน (life cycle) ของมันเริ่มจาก ตัวโปรแกรมเมอร์เองสร้าง code ขึ้นมาหลังจากนั้น commit code ขึ้นไปยัง github เพื่อ public code เสร็ดแล้ว ไป submit code ที่ packagist วงจรการทำงานภาพรวมประมาณนี้
- ต่อไปจะเป็นวิธีการสร้าง code ด้วย composer ก่อนอื่นให้สร้าง directoy เปล่า ๆ ขึ้นมาอันหนึ่งตั้งชื่ออะไรก็ได้ ของผมตั้งเป็น packgist
- หลังจากนั้นเปิด command line ขึ้นมาใช้คำสั่ง composer init เพื่อ intial ตัว package ที่เรากำลังจะสร้างมันจะถามดังนี้
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersPackage name (<vendor>/<name>) [samark/packgist]: Description []: test Author [Samark Chaisanguan <samarkchsngn@gmail.com>, n to skip]: Minimum Stability []: 1.0 Invalid minimum stability "1.0". Must be empty or one of: stable, RC, beta, alpha, dev Minimum Stability []: dev Package Type (e.g. library, project, metapackage, composer-plugin) []: library License []: MIT Define your dependencies. Would you like to define your dependencies (require) interactively [yes]? n Would you like to define your dev dependencies (require-dev) interactively [yes]? n { "name": "samark/packgist", "description": "test", "type": "library", "license": "MIT", "authors": [ { "name": "Samark Chaisanguan", "email": "samarkchsngn@gmail.com" } ], "minimum-stability": "dev", "require": {} } - คำถามหลัก ๆ ที่ต้องรู้ก็มี ชื่อแพ็คเก็จ คำอธิบาย ชื่อผู้สร้าง อีเมล์ version ที่ stable ,required หมายถึงมี pakcge อื่น ๆ ไหมที่ต้องติดตั้งลงไปด้วย หลังจากใส่คำตอบหมดกด enter เราจะได้ composer.json ขึ้นมา
- พอได้ composer.json แล้วลองทดสอบง่าย ๆ โดยการใช้คำสั่ง composer install ถ้ามันไม่มีอะไรผิดเราจะได้ directory ชื่อ vendor ขึ้นมา จะทำพวก autoload ให้
- มี trick อีกอย่างคือการทำ autoload file ให้เราเพิ่ม
-
"autoload": {"psr-0": {"HelloWorld": "src/"}}
- psr-0 คือมาตรฐานในการเขียน code ซึ่งเวลาที่เราเขียน code เราไม่ตรงตามรูปแบบที่มันออกแบบไว้มันจะมีการแจ้งเตือน และอีกอย่างคือมันมีหลาย psr มาก ลองไปหาอ่านดู
- HelloWord คือ directory ที่เก็บไฟล์ของเรา ส่วน src root path คือทุก class ที่ใช้ Namespaces จะถูก autoload คือโหลดอัตโนมัตินั่นเอง ว่ากันง่าย ๆ คือเราไม่ต้อง include หรือ required เวลาใช้งานมัน [ตัวอย่าง path file ]
-
/packgist/src/HelloWorld
- ต่อมาลองสร้างไฟล์ class SayHello.php โดยสร้างไว้ภายใต้ HelloWord ตัวอย่างไฟล์มีดังนี้
-
<?phpnamespace HelloWorld;class SayHello{public static function world(){return 'ok';}}
- เป็น class ง่าย ๆ มีหนึ่งฟังก์ชั่นคือ world เอาแค่นี้ก่อน
- หลังจากนั้นให้ไปสร้าง repository ที่ github ของคุณตั้งชื่อตามที่คุณต้องการได้เลยแต่จะให้ดีควรจะสอดคล้องกับชื่อที่ตั้งใน composer ขั้นตอนการ commit code แล้ว push code ขึ้นไปยัง github ผมขอข้ามไป ซึ่งผมเชื่อว่ามันมีบทความอื่น ๆ เขียนเยอะแล้ว
- หลังจาก code ขึ้นไปอยู่บน github แล้วขั้นตอนต่อไปคือ submit code ไปยัง https://packagist.org/ แต่ว่าเราต้องเป็นสมาชิกเสียก่อน หลังจากที่ เป็นสมาาชิกแล้ว login เข้ามาแล้วให้คุณไปที่เมนู submit coppy url repository ที่อยู่ใน github ของคุณมา submit ลองที่ https://packagist.org/ เป็นอันเสร็จพิธี
0 ความคิดเห็น:
แสดงความคิดเห็น