ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

การใช้ Composer: Dependency Management ใน PHP

บทความนี้แนะนำ Composer ซึ่งเป็นเครื่องมือจัดการ dependencies ยอดนิยมสำหรับ PHP ที่ช่วยให้การติดตั้ง, อัปเดต, และจัดการไลบรารีภายนอกในโปรเจ็กต์เป็นเรื่องง่าย โด...

การใช้ Composer: Dependency Management ใน PHP

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

ในบทนี้ เราจะมาเรียนรู้เกี่ยวกับ Composer ซึ่งเป็นเครื่องมือยอดนิยมสำหรับการจัดการ dependencies ใน PHP Composer จะช่วยให้เราติดตั้ง, อัปเดต และจัดการ dependencies ของโปรเจ็กต์ PHP ของเราได้อย่างง่ายดาย

Composer คืออะไร

Composer คือ Dependency Manager สำหรับ PHP พูดง่ายๆ ก็คือ Composer จะช่วยจัดการไลบรารีหรือแพ็กเกจต่างๆ ที่โปรเจ็กต์ของเราต้องการใช้ โดย Composer จะทำหน้าที่:

  • ค้นหาและดาวน์โหลด Dependencies: บอก Composer ว่าโปรเจ็กต์เราต้องการแพ็กเกจอะไรบ้าง Composer จะไปค้นหาและดาวน์โหลดมาให้
  • จัดการ Dependencies ที่ซับซ้อน: แพ็กเกจที่เราต้องการอาจจะต้องการแพ็กเกจอื่นๆ อีก Composer จะจัดการ dependency chain ให้เราโดยอัตโนมัติ
  • ติดตั้ง Dependencies อย่างถูกต้อง: Composer จะติดตั้งแพ็กเกจต่างๆ ในตำแหน่งที่เหมาะสม เพื่อให้โปรเจ็กต์ของเราสามารถใช้งานได้
  • อัปเดต Dependencies: เมื่อแพ็กเกจที่เราใช้มีการอัปเดต Composer จะช่วยให้เราอัปเดตแพ็กเกจเหล่านั้นได้อย่างง่ายดาย

เปรียบเทียบง่ายๆ Composer ก็เหมือนกับ npm (Node Package Manager) สำหรับ JavaScript หรือ pip (Package Installer for Python) สำหรับ Python

การติดตั้ง Composer

ก่อนที่จะเริ่มใช้งาน Composer ได้ เราต้องติดตั้ง Composer ลงในเครื่องของเราก่อน ซึ่งวิธีการติดตั้งจะแตกต่างกันไปตามระบบปฏิบัติการ

บน Windows

สามารถดาวน์โหลด Composer installer ได้จาก https://getcomposer.org/download/ แล้วทำการติดตั้งตามขั้นตอนที่ปรากฏบนหน้าจอ

หลังจากติดตั้งเสร็จ ให้เปิด Command Prompt หรือ PowerShell แล้วพิมพ์คำสั่ง `composer` หาก Composer ติดตั้งสำเร็จ จะมีข้อความแสดงรายละเอียดต่างๆ ของ Composer ปรากฏขึ้น

บน macOS และ Linux

สามารถติดตั้ง Composer ผ่าน Terminal โดยใช้คำสั่ง:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e00e3f118f69c34cd71c38a6ba43d0b20a6b31ac69d2383a8bd3059486b4c73f2ee7b1e45cb6bce72816b11a76e35344') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

คำสั่งเหล่านี้จะดาวน์โหลดไฟล์ติดตั้ง Composer, ตรวจสอบความถูกต้องของไฟล์, ติดตั้ง Composer และลบไฟล์ติดตั้งทิ้ง

จากนั้น ย้าย Composer ไปไว้ใน directory ที่สามารถเรียกใช้งานได้จากทุกที่ โดยใช้คำสั่ง:

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

หาก `/usr/local/bin` ไม่มีสิทธิ์ในการเขียน ให้ใช้ `sudo` นำหน้าคำสั่ง

หลังจากติดตั้งเสร็จ ให้เปิด Terminal แล้วพิมพ์คำสั่ง `composer` หาก Composer ติดตั้งสำเร็จ จะมีข้อความแสดงรายละเอียดต่างๆ ของ Composer ปรากฏขึ้น

composer.json

`composer.json` คือไฟล์ที่สำคัญที่สุดในการใช้งาน Composer ไฟล์นี้จะเก็บข้อมูลเกี่ยวกับโปรเจ็กต์ของเรา รวมถึง dependencies ทั้งหมดที่โปรเจ็กต์ต้องการ

เราสามารถสร้างไฟล์ `composer.json` ได้ด้วยตนเอง หรือใช้คำสั่ง `composer init` เพื่อให้ Composer สร้างไฟล์ให้เราโดยอัตโนมัติ

composer init

Composer จะถามคำถามต่างๆ เกี่ยวกับโปรเจ็กต์ของเรา เช่น ชื่อโปรเจ็กต์, คำอธิบาย, ผู้เขียน, ประเภทของโปรเจ็กต์ และ dependencies ที่ต้องการ จากนั้น Composer จะสร้างไฟล์ `composer.json` ที่มีข้อมูลที่เรากรอก

ตัวอย่างไฟล์ `composer.json`:

{
    "name": "example/my-project",
    "description": "My awesome PHP project",
    "authors": [
        {
            "name": "Your Name",
            "email": "your.email@example.com"
        }
    ],
    "require": {
        "monolog/monolog": "^2.0"
    }
}

อธิบายส่วนต่างๆ ในไฟล์ `composer.json`:

  • name: ชื่อของโปรเจ็กต์ (ควรเป็น vendor/package-name)
  • description: คำอธิบายของโปรเจ็กต์
  • authors: ข้อมูลของผู้พัฒนา
  • require: รายชื่อ dependencies ที่โปรเจ็กต์ต้องการ แต่ละ dependency จะมีชื่อแพ็กเกจและเวอร์ชันที่ต้องการ

Installing packages

หลังจากที่เรามีไฟล์ `composer.json` แล้ว เราสามารถติดตั้ง dependencies ได้โดยใช้คำสั่ง `composer install`

composer install

Composer จะอ่านไฟล์ `composer.json` และดาวน์โหลด dependencies ทั้งหมดที่ระบุไว้ จากนั้นจะสร้าง directory `vendor` ซึ่งเป็นที่เก็บ dependencies ทั้งหมด

นอกจากนี้ Composer จะสร้างไฟล์ `composer.lock` ซึ่งจะเก็บเวอร์ชันของ dependencies ที่ติดตั้งไว้ เพื่อให้แน่ใจว่าทุกคนที่ทำงานในโปรเจ็กต์เดียวกันจะใช้ dependencies เวอร์ชันเดียวกัน

หากเราต้องการเพิ่ม dependency ใหม่ เราสามารถใช้คำสั่ง `composer require`

composer require monolog/monolog

Composer จะดาวน์โหลดแพ็กเกจ `monolog/monolog` และเพิ่มเข้าไปในไฟล์ `composer.json` และ `composer.lock` โดยอัตโนมัติ

ข้อผิดพลาดที่พบบ่อย:

  • Package not found: ชื่อแพ็กเกจไม่ถูกต้อง หรือไม่มีแพ็กเกจนั้นอยู่ใน repository
  • Version conflict: มี dependency ที่ต้องการเวอร์ชันที่ขัดแย้งกัน
  • Permissions issues: Composer ไม่มีสิทธิ์ในการเขียนไฟล์

การแก้ไขข้อผิดพลาด:

  • Package not found: ตรวจสอบชื่อแพ็กเกจให้ถูกต้อง หรือค้นหาแพ็กเกจที่ต้องการใน Packagist
  • Version conflict: ลองเปลี่ยนเวอร์ชันของ dependency ที่มีปัญหา หรือใช้ `composer update` เพื่อให้ Composer แก้ปัญหาให้
  • Permissions issues: ตรวจสอบสิทธิ์ในการเขียนไฟล์ใน directory ที่ Composer กำลังทำงานอยู่

การใช้งาน Dependencies

หลังจากติดตั้ง dependencies แล้ว เราสามารถใช้งาน dependencies เหล่านั้นได้โดยการ include ไฟล์ `autoload.php` ที่อยู่ใน directory `vendor`

require __DIR__ . '/vendor/autoload.php';

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler(__DIR__.'/app.log', Logger::WARNING));

// add records to the log
$log->warning('Foo');
$log->error('Bar');

ไฟล์ `autoload.php` จะจัดการโหลดคลาสต่างๆ ที่อยู่ใน dependencies ของเรา ทำให้เราสามารถใช้งานคลาสเหล่านั้นได้อย่างง่ายดาย

การอัปเดต Dependencies

เมื่อ dependencies ที่เราใช้มีการอัปเดต เราสามารถอัปเดต dependencies เหล่านั้นได้โดยใช้คำสั่ง `composer update`

composer update

Composer จะตรวจสอบเวอร์ชันของ dependencies ทั้งหมด และอัปเดต dependencies ที่มีเวอร์ชันใหม่กว่า

ข้อควรระวัง: การอัปเดต dependencies อาจทำให้โค้ดของเราทำงานผิดพลาดได้ ดังนั้น ควรอ่าน changelog ของ dependencies ที่อัปเดต และทดสอบโค้ดของเราอย่างละเอียดก่อนที่จะนำไปใช้งานจริง

สรุป

Composer เป็นเครื่องมือที่สำคัญสำหรับการจัดการ dependencies ใน PHP ช่วยให้เราติดตั้ง, อัปเดต และจัดการ dependencies ของโปรเจ็กต์ PHP ของเราได้อย่างง่ายดาย การใช้งาน Composer อย่างถูกต้องจะช่วยให้โปรเจ็กต์ของเรามีความเป็นระเบียบ, ง่ายต่อการบำรุงรักษา และลดความเสี่ยงที่จะเกิดปัญหาเนื่องจาก dependencies ที่ไม่ถูกต้อง

ในบทถัดไป เราจะมาเรียนรู้เกี่ยวกับการ autoloading classes ด้วย Composer ซึ่งเป็นเทคนิคที่ช่วยให้เราจัดการคลาสต่างๆ ในโปรเจ็กต์ของเราได้อย่างมีประสิทธิภาพมากยิ่งขึ้น

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์