Wednesday, August 15, 2018

Berkenalan dengan Composer

Pada artikel saya sebelumnya tentang Membangun REST API menggunakan Slim, saya menggunakan suatu package & dependencies manager yang akan saya bahas di posting kali ini.

Beberapa tahun terakhir ini, konsep pemrograman di php mengalami perubahan yang cukup membuat banyak programmer beralih karena kemudahannya. Dengan adanya suatu dependencies manager yang populer akhir-akhir ini yaitu composer, konsep pemrograman di php jadi lebih terstruktur dan rapi.

Dengan composer dan autoload-nya serta namespace, kita bisa bebas mengakses file-file php tanpa harus ribet meng-include atau me-require semua file atau class yang kita butuhkan, autoload dari composer sudah melakukan semua itu out of the box. Sehingga OOP dalam php benar-benar nyamaan.

Kemampuan composer dalam hal dependencies sangat membantu programmer saat menggunakan suatu paket tertentu dimana paket tersebut membutuhkan paket-paket lainnya juga. Secara otomatis composer akan mengatur dan menyesuaikan ketergantungan suatu paket dengan paket lainnya juga.

Paket yang dapat digunakan bisa diakses di https://packagist.org. Sampai saat artikel ini ditulis, jumlah paket yang sudah terdaftar adalah 191, 491.

Berikut ini beberapa kendala yang bisa diselesaikan menggunakan composer:
  1. Mengatasi masalah denpendencies PHP package,
  2. Mengatasi masalah include file dengan autoload,
  3. Mengatasi masalah update paket.

Instalasi Composer

Composer membutuhkan PHP dengan versi 5.3.2+. Berikut cara instalasi di Sistem Operasi Linux & Mac:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Sedangkan untuk pengguna Windows dapat melakukan instalasi dengan download file instaler dari alamat di https://getcomposer.org/Composer-Setup.exe.

Setelah instalasi selesai, anda bisa cek dengan menjalankan perintah berikut di command atau terminal:
composer -V

Penggunaan

Misalkan kita ingin menampilkan tanggal dengan berbagai macam format, disini sudah terdapat paket yang sering digunakan yaitu Carbon. Kita bisa mengetahui nama paket dengan melakukan pencarian pada web https://packagist.org. Setelah menemukan nama paketnya (contohnya disini: nesbot/carbon), kita jalankan perintah berikut di command atau terminal untuk mennggunakannya:
composer require nesbot/carbon
Maka composer akan otomatis mendownload paket tersebut dan membuat file baru composer.json, composer.lock dan folder vendor.

Perhatikan file composer yang otomatis ter-create tadi.
{
    "require": {
        "nesbot/carbon": "^1.33"
    }
}
Disitu terdapat informasi dalam format json dimana kita menggunakan paket nesbot/carbon dengan versi 1.33, jika ingin menambahkan paket yang lain, kita tinggal edit file tersebut dan jalankan perintah composer update.

Selanjutnya kita bisa buat satu file php, misal kita simpan dengan nama index.php. Pada baris awal kita tambahkan fungsi require autoload.php yang otomatis sudah menyertakan semua paket yang kita butuhkan. Kemudian kita bisa gunakan fungsi use untuk instansiasi class nya. Detail code di index.php seperti berikut ini:
<?php require 'vendor/autoload.php';

use Carbon\Carbon;

$date = Carbon::createFromDate(1990, 11, 19);
$now  = Carbon::now();

$str = "Usia anda saat ini %y tahun, %m bulan dan %d hari\n";
printf($date->diff($now)->format($str));
Hasil dari code diatas akan menampilkan usia yang dihitung dari tanggal pada variable date dengan selisih hari ini yang ditampilkan dalam format tahun, bulan dan hari. Lebih detail fitur-fitur yang ada di paket carbon silahkan pelajari pada dokumentasinya di tautan https://carbon.nesbot.com/docs/.

Menambahkan paket baru

Untuk menambah paket yang lainnya, silahkan edit file composer.json dan tambahkan nama paket yang akan digunakan. Contohnya akan ditambahkan paket untuk membuat qr-code dengan nama endroid/qr-code, berikut code di file composer.json setelah diupdate:
{
    "require": {
        "nesbot/carbon": "^1.33",
        "endroid/qr-code": "^3.2"
    }
}
Kemudian jalankan perintah berikut di command atau terminal:
composer update
Setelah proses download dan instalasi secara otomatis dari composer sukses, maka paket tersebut siap digunakan. Untuk menampilkan qr-code menggunakan paket tersebut sama seperti contoh sebelumnya, disini anda tidak perlu lagi meng-include / me-require nama paket yang baru, karena di fungsi require vendor sudah mengakomodasi semua paket yang terdownload melalui composer. Anda tinggal menginstansiasi saja nama class nya menjadi object di code php.

Berikut contoh code untuk menampilkan qr-code yang berisi suatu text "Hello World":
<?php require 'vendor/autoload.php';

use Endroid\QrCode\QrCode;

$qrCode = new QrCode('Hello World');

header('Content-Type: '.$qrCode->getContentType());
echo $qrCode->writeString();
Kesimpulan dari artikel ini, silahkan segera beralih menggunakan composer bagi programmer php yang belum, karena seperti dituliskan diatas ada 3 kemudahan yang didapatkan saat anda mulai menggunakannya.

Yang penting segera dicoba degh 😉

0 comments:

Post a Comment