Yii2: Menggunakan dependency injection untuk meng-optimalkan konsistensi object hasil instance sebuah class

Dependency injection (DI) container adalah sebuah paradigma yang menjelaskan bahwa sebuah object memiliki kemampuan seperti bagaimana proses dia dibuat, mengkonfigurasi dirinya, serta dengan apa saja object dependensi yang dia butuhkan untuk berjalan sesuai alur sistem.
Published di Yii2, 2 years ago

Yii2 secara default juga sudah mendukung Dependency Injection (DI) ini. Silahkan lihat di Website resminya. Ada banyak case untuk DI ini, tapi Saya hanya akan menjelaskan bagaimana cara menggunakannya langsung pada project Yii2 yang biasa Saya gunakan. Terutama dalam kasus bagaimana sebuah object bisa mengkonfigurasi dirinya sendiri.

Sebagai contoh, rata-rata Yii2 programmer menggunakan Gridview untuk menyajikan data-data tabular yang ada pada database atau dari sebuah array. Syntax umum yang biasa digunakan (biasanya hasil dari generate Gii) adalah sebagai berikut.

<?=
Gridview::widget([
  'dataProvider' => $dataProvider,

    'searchModel' => $searchModel,

    'columns' => [

             ... field-field yang ingin ditampilkan

    ]

]);
?>

Potongan kode diatas biasanya bersifat unik masing-masing Gridview di folder views Yii2 Project, akan tetapi ketika Kita ingin menambahkan suatu konfigurasi di Gridview tersebut, let`s say Kita ingin merubah layout bawaan Gridview yaitu seperti pada gambar berikut :

Apakah kita harus rubah satu-satu GridView yang ada di halaman view-index masing-masing controller ? Tentu hal ini sangat tidak bagus untuk UI/UX ke user karena tidak ada jaminan konsitensi layout Griview (kecuali anda benar2 teliti seperti Detective Conan).

Solusinya adalah menggunakan Dependency Injection ini. Asumsi jika anda menggunakan Basic Template, anda akan mendapatkan Entry Script di folder web/index.php dengan statement: 


Dengan menggunakan file config/web.php inilah kita akan mendeklarasikan Dependency Injection ini ke Gridview tersebut.


Dari gambar diatas, Kita mengkonfigurasi object Gridview untuk mempunyai konfigurasi `tableOptions` sampai `summary` yang sama di semua instance Gridview. Sehingga semua object Gridview yang ada diYii2 project kita akan secara otomatis menggunakan konfigurasi ini tanpa kita harus menuliskan konfigurasi yang sama berulang-ulang.

Demikian.

Dukung Saya supaya tetap menulis artikel-artikel yang baik, membayar sewa domain, dan server untuk blog ini. Caranya dengan donasi cendol via Trakteer.id.


No image

Fadly Dzil Jalal

PHP, Yii2 Framework, Laravel, Java, Java Swing, Hibernate, Javascript, Angular, React, MySQL, MongoDB


Dapatkan USD 200 untuk develop aplikasimu di DigitalOcean DigitalOcean Referral Badge