Sunu Aziz Rahayu
Sunu Aziz Rahayu Seorang Web Programmer yang sebelumnya menekuni dunia Blogging.

Cara Menggunakan phpdotenv ( .env ) pada CodeIgniter 3

Integrasi .env pada CodeIgniter

Saat kita membangun sebuah aplikasi, kebanyakan dari kita biasanya menyimpan data credential seperti konfigurasi database maupun yang lainnya langsung pada kode program. Apabila kita sudah bekerja secara tim dalam membangun sebuah proyek aplikasi, bisa jadi antar developer menggunakan credential yang berbeda. Hal seperti ini tentunya akan menghambat kerjasama tim karena harus menyamakan credential antar developer terlebih dahulu. Belum lagi kita juga harus mengkonfigurasi data credential antar environment.
Pada framework CodeIgniter, kita dapat memisahkan data credential antar environment dengan cara memisahkannya dengan direktori. Namun hal ini, data tersebut tetap akan masuk pada Git repo. Hal ini pun kurang begitu efektif dan tidak begitu aman karena semua kolaborator pada proyek tersebut dapat mengetahui data credential yang bisa jadi hanya orang-orang tertentu yang diperbolehkan untuk menyimpan data credential tersebut.
Permasalahan seperti ini pernah saya alami saat mengatur data credential pada development environment, yang mana pada saat itu terjadi konflik pada pengaturan config database saat melakukan merge pada repo. Selain itu saya juga harus mengganti konfigurasi lainnya pada server production yang mana seperti kita ketahui, konfigurasi di CodeIgniter berada pada file yang berbeda-beda. Jadi kita harus mengedit satu-per-satu file konfigurasi sesuai dengan environment yang kita pakai. Untuk mengatur data credential yang saling terpisah tersebut ternyata lumayan memakan waktu. Hingga akhirnya kami (saya dan tim developer lain) berdiskusi dan memutuskan untuk menggunakan file .env sebagai tempat untuk menyimpan seluruh data credential. Pengambilan keputusan ini juga terinspirasi dari framework Laravel yang mana pada framework tersebut memang sudah menggunakan file .env sebagai tempat penyimpanan data credentialnya. Dan disini kita akan mengimplementasi file .env agar berjalan di framework CodeIgniter.

Instalasi phpdotenv di CodeIgniter
Untuk langkah pertama, kita harus mengaktifkan composer pada proyek CodeIgniter terlebih dahulu. Untuk cara instalasi composer di CodeIgniter akan saya paparkan di lain waktu.
  1. Buka file config.php yang terdapat pada path berikut:
    application/config/config.php
  2. Aktifkan Composer
    $config['composer_autoload'] = true;
  3. Masuk ke directori application melalui command line dan lakukan perintah berikut:
    composer require vlucas/phpdotenv
    composer install
  4. Langkah pertama untuk Instalasi package PhpDotENV di CodeIgniter selesai.

Konfigurasi phpdotenv di CodeIgniter
Pada langkah kedua ini, kita akan melakukan konfigurasi agar CodeIgniter otomatis membaca file .env. Ada beberapa cara untuk melakukan konfigurasi phpdotenv pada CodeIgniter, salah satunya menggunakan Hooks. Untuk menggunakan fitur Hooks dari CodeIgniter, kita aktifkan dulu melalui file config.php yang terdapat pada application/config/config.php menjadi seperti ini:
$config['enable_hooks'] = TRUE;
Lalu buka file hooks.php yang terdapat pada application/config/hooks.php dan masukkan kode berikut:
# Load phpdotenv
$hook['pre_system'] = function() {
 $dotenv = Dotenv\Dotenv::create(APPPATH);
 $dotenv->load();
};

Selanjutnya, buatlah file .env di dalam direktori application. Gunakan text editor seperti Sublime atau yang lainnya untuk membuat file tersebut.

Penggunaan .env pada CodeIgniter
Pada bagian ini adalah langkah terakhir dalam integrasi .env pada CodeIgniter, yaitu menggunakan variabel ENVIRONMENT pada konfigurasi bawaan CI. Sebagai contoh saya akan mengubah konfigurasi database menggunakan .env.
  1. Buka file .env yang sudah kita buat pada langkah sebelumnya dan masukkan data berikut:
    # Database Configuration
    DB_HOSTNAME="localhost"
    DB_USERNAME=""
    DB_PASSWORD=""
    DB_DATABASE=""
    DB_DRIVER="mysqli"
  2. Buka file konfigurasi database.php yang terdapat pada application/config/database.php
  3. Ganti value dari variabel konfigurasi dengan variabel environment seperti contoh di bawah ini:
    'hostname' => getenv('DB_HOSTNAME'),
     'username' => getenv('DB_USERNAME'),
     'password' => getenv('DB_PASSWORD'),
     'database' => getenv('DB_DATABASE'),
     'dbdriver' => getenv('DB_DRIVER'),
    *NB: penggunaan environment variabel bisa menggunakan getenv(), $_ENV[], $_SERVER[]

Baiklah, demikian cara integrasi file .env pada framework CodeIgniter. Semoga tulisan saya bermanfaat untuk teman-teman yang pernah ataupun sedang mengalami permasalahan yang sama seperti saya. Penggunaan file .env pada tulisan saya ini hanyalah contoh kecil dari penggunaan package phpdotenv itu sendiri, semoga teman-teman dapat mengembangkan penggunaan .env itu sendiri.
Contoh dari penggunaan .env di CodeIgniter bisa dilihat di akun github saya disini:
https://github.com/sunuazizrahayu/phpdotenv-for-codeigniter


Referensi:
http://roopampoddar.com/2016/01/26/integrating-phpdotenv-env-files-in-codeigniter-3-0-using-hooks/

Sunu Aziz Rahayu
Sunu Aziz Rahayu  Seorang Web Programmer yang sebelumnya menekuni dunia Blogging.

Komentar

Mau kasih kopi? Klik disini!