Composer Dasar
Manajer paket PHP: instalasi, composer.json, dan memakai library orang lain.
Analogi: Toko Aplikasi untuk Kode
Bayangkan setiap project PHP harus menulis ulang fungsi kirim email, olah gambar, dan validasi. Buang-buang waktu. Composer adalah "toko aplikasi" untuk kode PHP: satu perintah mengunduh package (kumpulan kode siap pakai) dari repositori Packagist, lengkap dengan versinya. Butuh kirim email? composer require phpmailer/phpmailer, selesai.
Kenapa ini revolusioner? Sebelum Composer (era PHP 4/5 awal), memakai library orang berarti download ZIP manual, copy ke project, dan berdoa versinya cocok. Update berarti mengulang semuanya. Composer mengubahnya menjadi satu baris perintah dengan manajemen versi otomatis.
<?php
// Contoh 1: instalasi dan pemakaian package (di terminal)
// composer require nesbot/carbon
// -> mengunduh Carbon (library tanggal) ke folder vendor/
// File: index.php
require "vendor/autoload.php"; // SATU baris memuat semua package!
use Carbon\Carbon;
echo Carbon::now()->addDays(7)->format("d M Y");
// Tanggal 7 hari dari sekarang, tanpa hitung manual!vendor/autoload.php adalah keajaiban Composer: satu require memuat semua package yang terinstal. Tidak perlu require puluhan file manual lagi.
<?php
// Contoh 2: composer.json, resep project-mu
// Isi file composer.json (ditulis manual atau via composer init):
{
"name": "tokoku/belajar",
"require": {
"php": "^8.1",
"nesbot/carbon": "^3.0"
}
}
// composer install -> baca composer.json, unduh sesuai versi
// composer update -> naikkan ke versi terbaru yang diizinkanTanda ^3.0 artinya "versi 3.x apa pun, tapi jangan 4.0" (boleh update minor/patch, tidak boleh major yang merusak). File composer.lock mencatat versi persis yang terinstal agar semua anggota tim memakai versi identik.
Jebakan yang Sering Terjadi
Meng-commit folder vendor/. Folder vendor/ bisa ratusan MB dan selalu bisa dibuat ulang dengan composer install. Yang di-commit: composer.json + composer.lock. Tambahkan vendor/ ke .gitignore sejak hari pertama.
composer update sembarangan di production. update menaikkan versi package yang bisa membawa perubahan merusak. Di production selalu composer install (ikut composer.lock yang sudah dites). update hanya di development, lalu tes ulang sebelum deploy.
Package Wajib Tahu
Ekosistem Composer punya package "bintang" yang dipakai jutaan project:
- nesbot/carbon: olah tanggal yang elegan (pengganti DateTime manual).
- phpmailer/phpmailer: kirim email via SMTP.
- intervention/image: resize dan manipulasi gambar.
- monolog/monolog: logging profesional (standar PSR-3).
- fakerphp/faker: data palsu untuk testing/seeding.
- phpunit/phpunit: unit testing (wajib untuk project serius).
Jelajahi packagist.org sebelum menulis library sendiri: kemungkinan besar sudah ada yang lebih matang dan teruji. Prinsip: jangan ciptakan ulang roda, kecuali untuk belajar cara kerja roda.
Catatan teknis: Install Composer dari getcomposer.org. Di XAMPP/Windows, installer
.exe-nya otomatis mengenali PHP XAMPP. Verifikasi dengancomposer --versiondi terminal. Kalau perintah tidak dikenal, restart terminal setelah instalasi.
Tantangan
Init project composer
Di folder kosong, jalankan composer init (terima default), lalu composer require nesbot/carbon. Buat index.php yang require autoload dan tampilkan tanggal 7 hari dari sekarang dalam format Indonesia memakai Carbon.