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:
- Cara Mudah Install Composer di Archlinux
- Menginstal Composer di XAMPP Linux
- Composer Manager Dependensi Untuk PHP
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:
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 tulisfoo/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 logikaAND
danOR
. Untuk logikaAND
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 menulis3 nomor
yakni mayor, minor dan patch, contoh1.2.3
maka ia hanya sampai versi kurang dari1.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. 😁