Framework Laravel sendiri sebenarnya adalah kumpulan puluhan pustaka PHP yang saling bergantung, dan framework buatan manusia lain juga demikian. Mengunduh serta memperbarui setiap pustaka secara manual akan menyita waktu dan rawan konflik versi. Composer hadir untuk mengatasi masalah tersebut sebagai dependency manager PHP, dan pada chapter ini kita akan memasang Composer sekaligus memahami cara kerjanya di dalam proyek Laravel.
Apa itu Composer #
Composer adalah dependency manager untuk PHP yang tugasnya mengunduh pustaka (package) beserta seluruh ketergantungannya ke dalam proyek kita. Kita cukup menyatakan “proyek ini butuh Laravel versi 13”, lalu Composer yang menghitung dan mengunduh semua package turunannya — ratusan package untuk sebuah aplikasi Laravel segar. Composer mengambil package dari repositori publik bernama Packagist, tempat hampir seluruh pustaka PHP modern dipublikasikan, termasuk laravel/framework itu sendiri; dokumentasi instalasi Laravel
pun memasang Composer sebagai prasyarat utama.
Peran Composer pada proyek Laravel bisa dianalogikan dengan daftar belanja dan nota belanja. Berkas composer.json adalah daftar belanja berisi nama package yang kita inginkan, sedangkan composer.lock adalah nota yang mencatat versi persis setiap package yang benar-benar diunduh.
Memasang Composer #
Instalasi Composer dilakukan lewat getcomposer.org . Halaman Download di situs tersebut selalu menampilkan empat perintah terbaru yang perlu dijalankan berurutan dari terminal:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '<hash-verifikasi-dari-situs>') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }"
php composer-setup.php
php -r "unlink('composer-setup.php');"Keempat perintah tersebut, secara berurutan, mengunduh installer, memverifikasi checksum SHA-384 agar installer tidak rusak atau dipalsukan, menjalankan installer, lalu menghapus berkas installernya. Salin nilai hash persis dari situs resmi karena hash tersebut berubah setiap rilis Composer baru. Skrip php.new yang kita bahas di chapter sebelumnya juga ikut memasang Composer secara otomatis, jadi kita bisa melewati langkah ini bila sudah menjalankannya.
Setelah instalasi selesai, verifikasi dengan perintah berikut:
composer --versionOutput yang Dihasilkan:
Composer version 2.10.3 2026-08-27 13:34:23
PHP version 8.4.8 (/home/z/bin/php)Output di atas diambil dari lingkungan pengujian Course ini. Angka 2.10.3 adalah versi Composer, sedangkan baris kedua menunjukkan PHP mana yang dipakai Composer untuk berjalan — penting diperiksa bila komputer kita memasang lebih dari satu versi PHP.
composer.json dan composer.lock #
Proyek Laravel yang baru dibuat sudah memiliki kedua berkas ini di direktori akarnya. Isi composer.json pada aplikasi segar terlihat seperti berikut:
{
"name": "laravel/laravel",
"type": "project",
"description": "The skeleton application for the Laravel framework.",
"require": {
"php": "^8.3",
"laravel/framework": "^13.17",
"laravel/tinker": "^3.0"
}
}Bagian require mencatat dependency utama beserta version constraint-nya: PHP minimal cabang 8.3, framework Laravel cabang 13.17 ke atas, dan package Tinker untuk REPL. Berkas composer.lock berpasangan dengannya dan menyimpan versi persis setiap package — termasuk seluruh dependency turunannya — yang sudah diunduh, misalnya laravel/framework versi 13.36.0.
Perbedaan peran kedua berkas ini penting dipahami sejak awal:
| Aspek | composer.json | composer.lock |
|---|---|---|
| Ditulis oleh | Kita (via composer require) | Composer secara otomatis |
| Isi | Versi yang diinginkan (rentang) | Versi yang terpasang (eksak) |
| Disimpan di Git | Ya | Ya |
| Dipakai saat | composer update | composer install |
require, install, dan update #
Tiga perintah Composer yang paling sering kita jalankan sepanjang Course ini memiliki perilaku yang berbeda:
| Perintah | Perilaku |
|---|---|
composer require nama/paket | Menambah package baru ke composer.json lalu mengunduhnya |
composer install | Memasang versi persis sesuai composer.lock, dipakai di komputer lain atau server |
composer update | Mencari versi terbaru yang cocok dengan constraint lalu memperbarui composer.lock |
Aturan praktisnya: jalankan composer update hanya di mesin pengembangan ketika kita sengaja ingin menaikkan versi, dan jalankan composer install di semua tempat lain agar setiap anggota tim mendapatkan versi package yang identik.
Autoload #
Terakhir, Composer juga mengatur autoload — mekanisme pemuatan kelas PHP tanpa require manual. Konfigurasi PSR-4 di composer.json proyek Laravel memetakan namespace ke direktori:
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
}Berkas vendor/autoload.php yang dihasilkan Composer dimuat otomatis oleh Laravel, sehingga kelas App\Models\User selalu ditemukan di app/Models/User.php tanpa konfigurasi tambahan. Bila kita menambah kelas baru di luar struktur yang terdaftar, jalankan composer dump-autoload agar peta autoload dibuat ulang.
Dengan PHP dan Composer yang kini siap, kita sudah memiliki seluruh prasyarat untuk membuat proyek Laravel pertama — topik yang kita kerjakan pada chapter berikutnya.