Dasar-Dasar Menggunakan Composer (Dependency Manager for PHP)


Membangun suatu proyek pemerograman PHP dari awal (from scratch), itu membutuhkan waktu yang tidak sedikit. Untuk mempercepat progres, biasanya kita menggunakan framework. Namun, jika Anda termasuk orang yang tidak ingin mengikuti atau mempelajari lagi aturan PHP framework yang beredar, dan tetap menggunakan metode OOP (Object Oriented Programming), Anda bisa memanfaatkan pustaka (library) atau dependensi yang ada. Jadi dengan demikian proyek yang Anda buat, tetap pada aturan dari kode sumber Anda sendiri.

Sejak adanya Composer mempermudah kita dalam tahap pengembangan proyek pemerograman PHP. Composer adalah suatu tool yang digunakan untuk memasang paket pustaka dependensi yang dibutuhkan dalam project pemerograman PHP. Composer ini cara kerjanya mirip dengan menejer paket pada GNU/Linux, seperti apt, dnf, pacman dan lain sebagainya. Kita cukup menuliskan nama paket yang dibutuhkan dengan perintah-perintah tertuntu.

Tulisan-tulisan sebelumnya di sini, saya telah memberikan tentang cara-cara pemasangan composer baik di GNU/Linux maupun Windows. Berikut Anda bisa lihat postingan saya sebelumnya:

Dalam praktek tulisan ini, saya menggunakan GNU/Linux distro Arch Linux. Jika Anda pengguna GNU/Linux tetapi bukan distro Arch Linux, Anda tetap bisa mempraktekan tutorial ini. Atau, jika Anda bukan pengguna GNU/Linux seperti pengguna Windows atau MacOS, tutorial ini juga tetap dapat dipraktekan, yang terpenting adalah syaratnya Anda sudah mamasang composer dan dapat berjalan dengan sebagaimana mestinya, juga memahami sedikit perintah CMD di Windows, dan Terminal di MacOS,

Pencarian Paket

Sebelum masuk ke tahap penggunaan, pastikan Anda mengatahui paket dependensi mana yang Anda butuhkan. Untuk mencari paket bisa lihat di sini:

https://packagist.org/

Cara nama paket yang Anda butuhkan. Contohnya mencari paket phpUnit:

Lalu lihat versinya, disesuaikan dengan kebutuhan Anda.

Jika Anda tipe orang penyuka sesuatu yang serba terbaru (bleeding edge) pilih versi dev-master.

Jika sudah selesai mencari paket, langkah selanjutnya kita pasang paket tersebut. Ada 2 metode untuk pemasangan paket dependensi di Composer. Yakni:

Metode Singkat

Ini adalah cara yang paling mudah. Cara ini akan sangatlah efektif jika digunakan pada saat kita hanya membutuhkan satu dependensi tambahan. Yang perlu Anda lakukan hanyalah, membuka Terminal, kemudian ketik composer require beserta nama paketnya. Contoh:

composer require foo/bar

Aturan dalam penulisan paket selalu dikuti dengan NamaVendor/NamaPaket dan penulisannya case-insensitive artinya huruf kecil maupun kapital tidak dibedakan. foo/bar dengan Foo/Bar itu sama. Namun untuk standardisasi salalu gunakan huruf kecil (lowercase).

Jika ingin dengan spesifik versi:

composer require "foo/bar:1.0.*"

atau bisa juga dengan format lain:

composer require "foo/bar=1.0.*"

Jika Anda ingin menggunakan versi stabil gunakan suffiks --stable:

composer require "foo/bar=1.0.*" --stable

Jika Anda ingin menggunakan versi terbaru / dev version gunakan --dev:

composer require foo/bar --dev

atau bisa langsung ditulis dev-master setelah nama paketnya:

composer require "foo/bar:dev-master"

Aturan untuk penulisan versi paket adalah:

  • Versi Tepat. Maksudnya Anda hanya butuh versi 1.2.3, maka cukup tulis foo/bar:1.2.3.
  • Menggunakan komparsi atau Range. Composer membolehkan kita menggunakan tanda komparasi seperti: >=, >, <=, != (lebih dari sama dengan; lebih dari; kurang dari sama dengan; tidak sama dengan). Anda juga dapat menggunakan logika AND dan OR. Untuk logika AND gunakan pemisah spasi atau koma. Sedangkan untuk logika OR gunakan tanda double pipe ( || ). Contoh:
    • foo/bar:>=1.2 (lebih dari sama dengan versi 1.2.x)
    • foo/bar:<=2.0 (kurang dari sama dengan versi 2.0)
    • foo/bar:>=1.0 <1.1 || >=1.2 (lebih dari sama dengan versi 1.0 DAN kurang dari versi 1.1 ATAU lebih dari sama dengan 1.2; ini artinya versi 1.0 atau lebih dari versi 1.2 tapi lewati versi 1.1)
  • Hypen atau tanda seterip (-). Cara ini adalah cara yang paling mudah dipakai untuk menspesifikasikan versi misalnya: Kita hanya ingin versi 1.0 sampai dengan 2.0 cukup tulis: foo/bar:1.0-2.0 berequevalen >=1.0 <2.1.
  • Wildcard atau tanda bintang (*). Jika kita hanya butuh versi Mayor dengan Minor yang paling baru. Contoh Anda hanya butuh versi 1.2 yang terbaru. Cukup tulisan: foo/bar:1.2.* Ini berarti versi >= 1.2.0 < 1.3.0 (lebih dari sama dengan versi 1.2.0 sampai dengan kurang dari versi 1.3.0)
  • Tilde (~). Jika kita hanya membutuhkan versi 1.2 sampai seterusnya tapi jangan sampai ke versi 2.0.0 harus kurang dari itu (>=1.2 < 2.0.0). Contoh: foo/bar:~1.2 Ini berarti >= 1.2.0 < 2.0.0. Jika Anda menulis 3 nomor yakni mayor, minor dan patch, contoh 1.2.3 maka ia hanya sampai versi kurang dari 1.3.0. foo/bar:~1.2.3 artinya >= 1.2.3 < 1.3.0. Jika paket terdapat versi beta. Contoh versi 2.0-beta.1 ia akan tetap dimasukan mengapa? karena versi 2.0 beta adalah versi sebelum 2.0 jadi tetap masuk kategori jika kita menulis ~1.2.
  • Caret (^). Jika kita membutuhkan spesifik versi minor atau versi sebelum versi 1.0 (pre-version) misalnya: foo/bar:^3.0 ini artinya >=0.3.0 <0.4.0.

Metode Terperinci

Metode ini hemat saya adalah metode terbaik. Sangat bermanfaat jika kita ingin membangun suatu project dengan berbagai macam dependensi, cukup tulisankan dependensi yang diperlukan dalam satu berkas. Juga dengan metode ini, akan mempermudah kita pada saat distribusi kode. Jadi tidak perlu mencari dependensi mana saja yang diperlukan. Cukup ketik composer install maka semua kebutuhan akan terpenuhi.

Berikut caranya:

Pertama-tama Anda harus buat satu berkas dengan nama composer.json. Kemudian isi seperti kode dengan format di bawah ini:

{
    "require": {
        "vendor/package1": "1.*",
        "vendor/package2": ">=1.0 <1.1 || >=1.2",
        "vendor/package3": "^2.0.3"
        "vendor/package4": "~1.3"
    }
}

Untuk aturan penulisan versi bisa dilihat di atas. Setelah selesai, melakukan perintah berikut:

composer install

Contoh di atas adalah pemasangan paket Monolog. Lebih mudah bukan?

Sebagai tambahan, jika Anda ingin mengimplentasikan PSR-0 dan <code>PSR-4</code> di Composer dapat menambahkan baris kode seperti contoh berikut penerapan PSR-4:

{
    "require": {
        "monolog/monolog": "1.0.*"
    },
    
    "autoload": {
        "psr-4": {
            "Monolog\\": "src/",
            "Vendor\\Namespace\\": ""
        }
    }
}

Sedangkan PSR-0 nya:

{
    "autoload": {
        "psr-0": {
            "Monolog\\": "src/",
            "Vendor\\Namespace\\": "src/",
            "Vendor_Namespace_": "src/"
        }
    }
}

Setelah itu lakukan generate ulang autoloader dengan cara:

composer dump-autoload

Untuk lebih lengkap silahkan baca: https://getcomposer.org/doc/04-schema.md#autoload

Tahap Implementasi

Jika sudah selesai memasang paket, maka Anda akan melihat sebuah direktori bernama vendor dan berkas bernama composer.lock.

Direktori vendor berisi semua dependensi yang Anda pasang. Kemudian berkas composer.lock berisi tentang informasi

Sekarang kita hanya tinggal panggil saja pustakanya dengan autoloader. Yakni:

<?php
require __DIR__ . '/vendor/autoload.php';

Kode di atas wajib ditulis untuk memanggil dependensi yang sebelumnya telah Anda pasang. Kemudian setelahnya Anda tinggal memasukan kode disesuai dengan paket yang Anda pasang sebelumnya. Contoh berikut ketika saya memasang paket Redis:

<?php
    require __DIR__ . '/vendor/autoload.php';
    $redis = new Redisent\Redis('redis://localhost');
    $redis->set('awesome', 'absolutely');
    echo "Is Redisent awesome? ", $redis->get('awesome'), "\n";

Nah kan, cukup mudah bukan?

Menghapus Dependensi

Mungkin Anda telah menemukan dependensi lainnya yang lebih simpel juga lengkap. Kemudian Anda ingin menghapus dependensi lama Anda, yang mana ia tidak lagi diperlukan. Bagaimana cara melakukannya? Cukup mudah lakukan perintah berikut:

composer remove vendor/package

Contoh ketika saya menghapus dependensi monolog:

Memperbaharui Dependensi

Adakalanya kita perlu memperbaharui (update) dependensi demi menjaga stabilitas kode, terhadap bugs atau kerentanannya. Cara termudah memperbaharui dependensi adalah dengan perintah:

composer update

Cara di atas memperbaharui seluruh dependensi yang telah Anda pasang. Jika Anda menginginkan satu atau beberapa dependensi saja yang diperbaharui, gunakan perintah berikut:

composer update vendor/package

Oke, sampai di sini dulu dasar-dasar penggunaan Composer. Hemat saya perintah dari tulisan ini adalah perintah dasar dari yang paling dasar yang wajib diketahui bagi Anda yang ingin memanfaatkan pustaka luar dengan Composer. Sebagai tambahan beberapa perintah jika Anda ingin lebih terperinci bisa menambahkan suffiks --help contoh:

composer require --help
composer remove --help
composer update --help

Semoga bermanfaat. 😁