Nafies Luthfi

Life will always feel wonderful if we always think positively.

Perintah-perintah Composer: require

Pada materi ini (dan beberapa materi berikutnya) kita akan bahas perintah-perintah umum yang sering digunakan pada composer, yaitu :

  1. require
  2. create-project
  3. install, dan
  4. update

Perintah-perintah pada Composer dapat kita lakukan melalui terminal (pada linux dan mac) atau command prompt atau powershell (pada windows).

composer create-project

Perintah ini kita gunakan untuk menambahkan sebuah paket ke dalam project kita, dan menjadikan paket tersebut sebagai dependensi dari project kita.

Struktur perintahnya :
composer require nama-paket versi

Contoh perintahnya :

$ composer require nesbot/carbon 1.20.0

Makna perintah :
“Composer, saya memerlukan paket nesbot/carbon versi 1.20.0 dalam project saya.”

Di sini kita ambil contoh sebuah paket bernama “nesbot/carbon”. Sebagai info, paket ini adalah paket ekstensi atau turunan dari kelas DateTime pada PHP. Paket ini dapat membantu kita dalam mengoperasikan tanggal dan waktu untuk dalam aplikasi PHP.

Teman-teman dapat melihat manfaat dan dokumentasi paket ini:
Dokumentasi http://carbon.nesbot.com/docs
Source code https://github.com/briannesbitt/Carbon
Packagist https://packagist.org/packages/nesbot/carbon

Sebelum kembali bahas composer require, sedikit gambaran tentang sebuah paket atau library pada Composer/Packagist.
Setiap nama paket memiliki format nama-vendor/nama-paket, kalau diibaratkan sebuah buku, formatnya serupa pengarang/nama-buku

Nah, jadi pada paket yang barusan kita gunakan nesbot/carbon, nesbot adalah nama atau alias si pembuat atau vendornya, sedangkan carbon adalah nama paketnya.

Ok kembali bahas perintah composer require. Jadi kalau kita jalankan, maka tampilannya akan seperti ini: Composer Require 01

Tahap prosesnya kira-kira seperti ini:

  1. Ketika kita mengetikkan composer require nesbot/carbon 1.20.0 dan tekan enter,
    • Composer membuat file composer.json
    • Composer membaca detail paket yang bersangkutan pada packagist dan melihat dependecy paket tersebut
    • pada tahap ini, Composer juga membaca spesifikasi PHP pada PC kita
  2. Composer menginstall/men-download paket-paket dependency
    • paket-paket dependecy akan di-download terlebih dahulu
    • paket yang kita “require” akan di-download setelah dependecynya selesai di-download
  3. Composer membuat file composer.lock dan file-file autoload.php yang akan me-load kelas-kelas yang ada di seluruh paket.

Composer Require 02

Bisa kita lihat pada gambar tersebut, untuk menginstall paket nesbot/carbon ternyata ada dua paket lain yang di-download oleh Composer.

Mengapa ada dua paket tambahan? Dari mana asalnya kedua paket tersebut?

Kalau kita lihat di https://packagist.org/packages/nesbot/carbon, ternyata dia memiliki 1 dependensi paket, yaitu symfony/translation

Lalu satu paket lagi dari mana? oke kita lihat di packagist symfony/translation, paket ini memiliki satu dependency paket lain, yaitu symfony/polyfill-mbstring

Composer Require 03

Oke, kita coba lihat lagi apakah paket symfony/polyfill-mbstring punya dependency lagi? kita lihat di packagist symfony/translation

Composer Require 04

Pada gambar di atas symfony/polyfill-mbstring tidak memiliki dependency ke paket lain.

Nah, ini rupanya cocok dengan pembahasan kita pada artikel perkenalan Composer, di mana sebuah paket bisa memiliki dependency, dan dependency-nya juga punya dependency. Begitu seterusnya.

Oke sampai disini kita mengerti dua hal:

  1. Perintah composer require, kita meminta Composer untuk menginstall/men-download sebuah paket agar menjadi dependency project/aplikasi kita.
  2. Sesuai dengan analogi yang kita pahami bersama pada materi pada perkenalan dengan Composer, bahwa Composer terbukti memang benar “Dependency Manager” sehingga untuk dapat menggunakan satu paket/library, kita tidak perlu repot-repot men-download paket dan depedencynya secara manual.

Dan sedikit kita mengingat materi pada cara kerja Composer, bahwa :

Seluruh paket yang diinstall oleh Composer akan “menghuni” folder bernama “vendor”

Ya, semua paket yang di-download oleh Composer akan diletakkan dalam folder “vendor”, kita akan bahas tentang folder vendor pada artikel lainnya.

Selanjutnya kita akan membahas tentang perintah berikutnya, yaitu composer create-project.