Tutorial Composer untuk Pemula


Jika Anda seorang developer PHP masa kini (cieee..), maka wajib kenal dengan Composer. Composer merupakan dependency management untuk PHP.

Apaan tuh dependency management? Dependency management merupakan sebuah tools yang memecahkan masalah berikut :

  • Anda punya project yang butuh library. Misalnya, library buat eksport data ke Excel yaitu PHPExcel dan DomPDF buat eksport data ke PDF.
  • Library-library tersebut juga butuh library lainnya. Dalam kasus ini, PHPExcel butuh library ext-xml dan DomPDF butuh phenx/php-font-lib. Kasus seperti ini, namanya dependensi. Jadi, bisa disebut PHPExcel memiliki dependensi ext-xml.
  • Anda males download (install) semua library tersebut berikut dependensinya secara manual.

Cara kerja composer tuh seperti ini:

  • Anda menulis library apa saja yang dibutuhkan project.
  • Composer mencari versi library yang sesuai dan menginstallnya (download) secara otomatis.

Dengan composer, kita tidak usah repot-report download library PHP manual satu-persatu. Begitupun dengan proses update library, tidak usah diupdate satu-persatu, cukup ubah satu file (composer.json), jalankan perintah composer update untuk mengupdate semua library.

Kalau bisa gampang gini, ngapain dibikin susah? :D

Instalasi

Cara menginstall composer di sistem berbasis Unix (Linux dan OSX) dan Windows cukup berbeda. Namun tenang, di buku ini, saya akan menjelaskan untuk dua OS tersebut.

Pengguna Linux. Buka terminal, jalankan perintah

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Sebelum menjalankan diatas, pastikan Anda sudah menginstall PHP.

Pengguna OSX. Buka terminal, jalankan perintah

brew update
brew tap homebrew/homebrew-php
brew tap homebrew/dupes
brew tap homebrew/versions
brew install php55-intl
brew install homebrew/php/composer
Sebelum menjalankan diatas, pastikan sudah menginstall homebrew

Pengguna Windows. Buka browser (beda sendiri), download installer di https://getcomposer.org/Composer-Setup.exe
Jalankan installer tersebut. Selesai.

Setelah menginstall composer, coba buka terminal/command prompt di Windows (Tekan Window+R ketik cmd). Lalu jalankan perintah berikut:

composer -V

Pastikan ada output seperti ini:

Sukses menginstall composer

Jika tampilan tersebut muncul, berarti Anda telah sukses menginstall composer. Selamat! Anda memang berbakat menjadi programmer Laravel! :D

Penggunaan

Yuk kita pelajari bagaimana cara pakai makhluk bernama composer ini. Saya akan bikin kasus dimana kita membutuhkan library Carbon. Library ini digunakan untuk memanipulasi tampilan objek DateTime. Pernah melihat tampilan tanggal 2 hour ago, 2 minutes ago atau A month ago di web? Nah, itu salah satu fungsi dari Carbon.

Untuk mendapatkan package dengan Composer, pertama kita datang ke pusat package, kunjungi di packagist.org. Setelah terbuka, ketikkan “carbon” di kotak pencarian dan klik pada hasil pertama yang muncul yaitu “nesbot/carbon”.

Mencari package Carbon di Packagist

Pada halaman selanjutnya, Anda dapat melihat detail dari package Carbon ini.

Detail package Carbon di Packagist

Beberapa informasi yang bisa Anda dapatkan di halaman ini yaitu:

  • Deskripsi package
  • Total Install
  • Website dokumentasi (Homepage) dan hosting source code
  • Data pembuat package
  • Update package terakhir
  • Dependensi

Jika Anda mengunjungi website resmi dari package ini di https://github.com/briannesbitt/Carbon, Anda akan mendapatkan dokumentasi lengkap cara penggunaan package ini.

Dokumentasi Carbon

Kembali ke halaman packagist, untuk menginstall package Carbon ini, coba Anda scroll agak ke bawah. Anda akan melihat beberapa versi dari Carbon. Ada dua jenis, yaitu versi dalam pengembangan (dev-master) dan stabil. Saran saya, selalu gunakan versi yang stabil.

Versi Carbon

Pada contoh ini, kita akan menginstall versi 1.11.0 maka kita klik pada versi itu. Pada kotak yang muncul, copy pada tulisan setelah require. Yaitu ”nesbot/carbon”: “1.11.0".

Pilih versi Carbon

Untuk menginstall package ini, mari buat sebuah folder misalnya di ~/sites/coba-carbon (untuk pengguna windows bisa di C:\xampp\htdocs\coba-carbon). Pada folder ini, buatlah file baru bernama composer.json dengan isi:

file: ~/sites/coba-carbon

{
“require” : {
“nesbot/carbon”: “1.11.0"
}
}

Pada file ini, kita mem-paste teks dari packagist tadi di baris ke 3. Dengan composer, Anda cukup menyimpan nama dari package yang dibutuhkan dan versinya pada bagian require. Selanjutnya, untuk mendownload package tersebut, jalankan perintah:

composer install
Menginstall Carbon

Jika Anda berhasil mendownload Carbon, kini akan ada beberapa file dan folder baru di folder coba-carbon:

Struktuf folder composer

Biar lebih paham, berikut penjelasan file dan folder itu:

  • composer.json, ini file yang kita buat, berisi dependensi library dari project kita.
  • composer.lock, file ini mencatat versi package yang saat ini terinstal.
  • vendor, folder ini berisi package yang telah kita install. Setiap package yang kita tulis di bagian require akan di download ke folder ini.
  • vendor/autoload.php, berfungsi memanggil autoloader dari composer.

Salah satu keunggulan dari composer adalah autoloader. Fitur ini berfungsi untuk memanggil class yang sesuai ketika kita membutuhkan class dari suatu library. Jadi, jika banyak library yang kita install kita hanya cukup menulis require untuk file vendor/autoload.php. Dan, autoload ini cukup cerdas dengan hanya me-load class yang kita butuhkan.

Bagi yang belum paham tentang autoloader, baca artikel tutorial autoloader di PHP5 ini.

Untuk mempraktekan penggunaan autoload ini, kita akan menggunakan library Carbon untuk menampilkan tanggal dalam bentuk … ago. Caranya, buatlah file index.php di ~/sites/coba-carbon dengan isi:

file: ~/sites/coba-carbon/index.php

<?php
require ‘vendor/autoload.php’;
use Carbon\Carbon;
date_default_timezone_set(‘Asia/Jakarta’);
$date = Carbon::createFromDate(1945, 8, 17);
printf(“Kapan Indonesia Merdeka? %s\n”, $date->diffForHumans());

File ini memiliki tugas yang sangat penting, yaitu… memberitahu Anda kapan Indonesia merdeka :D

Oke, ini penjelasannya:

  • Baris 2: me-require autoload dari composer.
  • Baris 3: Menggunakan namespace (akan dijelaskan kemudian) kita meload library Carbon.
  • Baris 4: Mengeset timezone default
  • Baris 5: Membuat tanggal
  • Baris 6: Memanggil tanggal dalam bentuk… ago

Untuk mengetesnya jalankan perintah ini dari folder ~/sites/coba-carbon:

php index.php
Berhasil mendemokan Carbon dengan composer

Sip. Berhasil!

Kini, ceritanya kita butuh package baru di project ini misalnya kita butuh mengakses dropbox untuk hosting file kita. Mari kita tambahkan package Flysystem. Package ini berguna untuk menyeragamkan syntax untuk mengakses file di FTP, AWS S3, Rackspace, Dropbox, Sftp, Zip dan WebDAV.

~/sites/coba-carbon/composer.json` menjadi :

file: ~/sites/coba-carbon

{
“require” : {
“nesbot/carbon”: “1.11.0",
“league/flysystem”: “0.5.5"
}
}

Untuk menginstall package baru tersebut, jalankan perintah

composer update
Update composer untuk menginstall package baru

Perintah ini, selain berfungsi menginstall package baru yang ditambahkan di bagian require, juga berfungsi mengupdate package yang telah terinstall jika kita merubah versi package yang digunakan.

Jika dibutuhkan, Anda juga dapat menginstruksikan composer untuk menginstall package hanya untuk development.
Caranya dengan membuat key require-dev di composer.json berisi package yang Anda butuhkan hanya pada saat development. Untuk menginstall/mengupdate berikut package yang berada di require-dev ini, jalankan composer dengan opsi --dev.

Saya rasa penjelasan sekilas tentang composer ini sudah cukup. Masih banyak topik lain dari composer misalnya membuat package dan repository privat yang bisa Anda pelajari di https://getcomposer.org/doc.

Source code dari latihan ini bisa didapat di https://github.com/rahmatawaludin/coba-carbon

Ringkasan

Pada bab ini Anda telah mempelajari topik-topik dasar sebelum memulai mempelajari Framework Laravel. Memahami topik ini sangat penting agar Anda tidak tenggelam dalam lautan kebingungan ketika mempelajari Laravel. Banyak fitur Laravel yang akan dijelaskan di bab-bab selanjutnya yang bergantung pada topik di bab ini.

Selanjutnya, kita akan membahas instalasi dan konfigurasi Framework Laravel. Semangat!


P.S: Artikel ini merupakan salah satu materi di buku saya Menyelami Framework Laravel. Download di http://leanpub.com/bukularavel