Composer คืออะไร

ในปี 2018 น้อยคนนักจะไม่รู้จักกับ Composer แต่ผมก็คิดเสมอ มันต้องคนอีกที่ยังไม่รู้อยู่ดี เรามาเริ่มกันเลย หลายๆ คนที่หัดเขียนเว็บไซต์ในปัจจุบัน หลายๆ คนคงจะเคยเห็นพวกคำสั่งที่ให้พิมพ์ใน Terminal เช่น

composer install
composer update 
composer create project bla bla bla
composer dump-autoload

คำสั่ง Composer พวกนี้เอาไว้จัดการ Library ที่เราต้องการจะใช้ คิดถึงเมื่อก่อนที่ผมต้องการจะใช้ Libray ซักตัวก็ต้องไป Download Zip มา แตกไฟล์ เสร็จแล้วก็มา Require ใส่โปรเจ๊คงานของเรา เช่น ถ้าผมจะใช้ predis เอาไว้ เชื่อมกับ Redis  ก็ต้องไปดาวน์โหลดมา จะใช้ Adodb ก็ไปโหลดมา จะใช้ Twig ก็ต้องไปหา แล้วถ้าต้องการจะลบ ก็ต้องแก้โค้ด ลบไฟล์ เซฟไฟล์ทับ แล้วถ้าจะอัพเดท Library ก็ต้องมานั่งเช๊ค โอ้ว ปวดหัวครับ พูดเลย จะใช้อะไรซักอย่างนี่เหนื่อย ยิ่งทำโปรเจ๊คทิ้งไว้ซักปีกลับมาต้องการจะอัพเดทเวอร์ชั่น มันต้องมี มันต้องมาแน่ๆ Error คิดแล้วก็ช่างมันไม่อัพหล่ะกัน แต่ เจ้า Composer นี่หล่ะที่จะมาช่วยจัดการ และช่วยมากๆ ด้วย

Composer ใช้งานยังไง

ไม่อยากเลยครับ เข้าไปดู ได้ที่นี่การติดตั้งของแต่หล่ะ OS จะไม่เหมือนกัน ตัวผมเองใช้ Linux Ubuntu มาจะ 6 ปีหล่ะ อาจจะบอกการติดตั้งของ Windows ไม่ค่อยเห็นภาพนะครับ ไม่ได้ทำให้ดู เพราะผมไม่มี OS Windows นะครับ แต่หลักการคล้ายๆ กัน เซ็ท Path ให้ถูก เข้าไปดูการติดตั้งได้ที่นี่ Composer Install

สำหรับคนที่ใช้ Linux หรือ Mac ก็คล้ายๆ กันครับ จะแยกออกเป็น Locally กับ Global ตรงไปตรงมาครับ Locally คือใช้ภาพใน Project งานของเรา ส่วน Global คือใช้ได้ทั้งเครื่องของเรา การติดตั้งก็

สำหรับ Locally พิมพ์

php composer-setup.php --install-dir=bin --filename=composer

ถ้าจะใช้ Global พิมพ์

mv composer.phar /usr/local/bin/composer

เราก็จะใช้งานได้หล่ะ ถ้าทำถูกต้องจะขึ้นตัวอย่างแบบนี้  ลองพิมพ์ composer -V (ตัวใหญ่ Version)
composer version
composer version

 

เรามาดูกันต่อว่ามันใช้ยังไง ลองพิมพ์ composer -h  (Help)

composer help
composer help

 

ที่นี้มาดูกันว่ามันมี Command อะไรใช้ทั้งหมดได้มั่ง พิมพ์ composer list

composer command
composer command

 

ประมาณนี้ครับ สำหรับการติดตั้งและการทำสอบว่าใช้ได้ใหม คร่าวๆ

 

การทำงาน

การทำงานก็จะมีหลักการประมาณนี้ครับ composer จะทำงานผ่าน file หนึ่งที่ชื่อ composer.json ซึ่งไฟล์นี้เราจะสามารถ จัดการ Library ได้เลยว่าอยากได้อะไรบ้าง สามารถเข้าไปดูได้ที่ packagist ซึ่งค้นหาได้เลย การสร้างไฟล์ให้พิมพ์ composer init ผ่านทาง Terminal หลังจากนั้น ก็ตอบคำถามไปเลยครับ หลังจากจบการทำงานระบบ จะสร้างไฟล์ composer.json มาให้

หลังจากใส่ Library ที่ต้องการแล้วก็ให้พิมพ์ composer install ที่นี้ composer ก็จะวิ่งไปเรียกหาเองครับ เราก็รออย่างเดียว ไฟล์ ทั้งหมดจะถูกเก็บไว้ที่โฟลเดอร์ Vendor พร้อมกับสร้างไฟล์ composer.lock เอาไว้ โปรดจำไว้ว่าช่างมันไปเลยครับ ไม่ต้องไปยุ่งกับมัน ปล่อยให้ระบบเป็นตัวจัดการ ที่ๆ เดียวที่เราจะเข้าไปตั้งค่า คือ composer.json เท่านั้น

แล้วถ้าเราต้องการจะเพิ่มหล่ะ ก็เข้าไปแก้ได้ที่ composer.json เลยครับ ตัวอย่างการแก้ไข require syntax คือ “predis/predis”: “^1.1” ข้างหน้าคือ ชื่อ Library คั่นด้วย โคลอน แล้วตามด้วยเลขเวอร์ชั่น สำหรับ หมวก มีความมายว่า 1.1 ขึ้นไปครับ ถ้าเราจะเอาแค่ 1.1 ก็เอาหมวกออก ถ้าใส่ตามนี้ก็จะไล่ตั้งแต่ล่าสุดลงมาถ้าไม่เจอแล้วตัวที่จะเอาคือ 1.1 นั่นเอง ตัวอย่างที่ผมยกมา คือ predis นะครับที่ใช้ประจำ ต่อมาเราก็ต้องพิมพ์ composer update ถ้าติดตั้งครั้งแรกให้ install ถ้าต้องการอัพเดทให้ update จำไว้ให้แม่นเลยนะครับ

ถ้าจะลบหล่ะ ยิ่งงายใหญ่ ลบ ทิ้งเลยครับ บรรทัดที่ต้องการแล้วก็ composer update เหมือนเดิม จบครับ ไม่ยากเลยครับ ต้องลองใช้ดู

 

การเรียกใช้ 

ผมอธิบายมาจะเป็นการดาวน์โหลด Library ที่ต้องการ การจัดการ การลบ อ้าวแล้วเราจะเรียกใช้มันยังไงหล่ะ ก็ง่ายๆ เลยครับ composer จะสร้างไฟล์ขึ้นมาอยู่ใน vendor ที่ชื่อว่า autoload.php นี่หล่ะครับพระเอกเลย require file นี้ไฟล์เดียวพอครับ แล้วในโปรเจ็ค เราก็ใช้งานได้เลย

ทั้งนี้การใช้ Library แต่หล่ะต้องดูให้ดีๆ นะครับ ว่ามีท่าไหน ท่ายากไหม บางตัวก็ fuction เฉยๆ บางตัวใช้ Namespace

 

Namespace  คืออะไร

Namespace ชื่อนี้อาจจะไม่ค่อยคุ้นหน่อย ถ้าไม่ได้เขียนบ่อยๆ Namespace คือการจัดกลุ่มของ Class หรือ Method ได้อิทธิพลมาจาก ภาษาอื่นหล่ะครับ Library บางตัวต้องใช้งานผ่าน Namespace เช่น Carbon ต้องดูเป็นตัวๆ ไปนะครับ จริงๆ สามารถใช้ประยุกต์กับงานของเราได้ แต่เอาไว้ก่อนนะครับ เดี๋ยวจะเยอะเกินไป ตอนนี้สนใจเรื่องติดตั้ง จัดการ และเรียกใช้ให้ได้ก่อนนะครับ ไว้มีโอกาศจะมาเพิ่มข้อมูลให้นะครับ

 

 

 

 
Loading...