composerpackage-managerlibraryautoloadMahir4 mnt baca

Composer: Package Manager PHP

Mengelola library PHP dengan Composer: install, require package, dan autoload otomatis.

Apa itu Composer?

Composer adalah package manager resmi PHP, mirip npm di JavaScript. Dengan Composer kamu bisa memakai ribuan library siap pakai (untuk PDF, HTTP client, validasi, dan lainnya) tanpa copy-paste kode dari internet.

Instalasi dan proyek pertama

  1. Unduh Composer dari getcomposer.org dan install.
  2. Cek di terminal: composer --version.
  3. Di folder proyek, inisialisasi:
bash
composer init

Ikuti wizard-nya (nama package, deskripsi, dan sebagainya), dan Composer membuat file composer.json.

Memasang library

Misalnya butuh library untuk membuat UUID:

bash
composer require ramsey/uuid

Composer mengunduh library ke folder vendor/ dan mencatat versi pastinya di composer.lock. Cara pakainya lewat autoload:

php
<?php
require __DIR__ . "/vendor/autoload.php";

use Ramsey\Uuid\Uuid;

$id = Uuid::uuid4();
echo $id->toString(); // contoh: 550e8400-e29b-41d4-a716-446655440000

Satu baris require vendor/autoload.php membuat semua class dari semua library langsung bisa dipakai, termasuk class buatanmu sendiri kalau didaftarkan di composer.json:

json
{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

Setelah mengubah autoload, jalankan composer dump-autoload.

Aturan main

  • Jangan commit folder vendor/ ke Git, cukup commit composer.json dan composer.lock. Orang lain tinggal jalankan composer install.
  • composer install: pasang sesuai composer.lock (untuk deploy dan tim).
  • composer update: naikkan ke versi terbaru yang diizinkan (hati-hati, bisa merusak).
  • composer require: tambah library baru.

Catatan teknis: File composer.lock mengunci versi persis setiap library termasuk dependensinya. Inilah yang membuat hasil composer install identik di laptopmu, laptop temanmu, dan server production. Jangan hapus atau abaikan file ini di proyek tim, tanpanya setiap orang bisa dapat versi library yang berbeda dan bug muncul "hanya di server".