Contoh Setting Variable File .env pada Codeigniter 3

Contoh Setting Variable File .env pada Codeigniter 3

Sobatcoding.com - Tutorial cara menggunakan file .env pada Codeigniter 3

Di dalam pembangunan sebuah sistem kita biasanya menyimpan beberapa konfigurasi seperti koneksi database, nama app dan lain-lain langsung di dalam aplikasi. Seperti halnya di dalam Codeigniter 3 kita menyimpan konfigurasi seperti base_url, database dan lainnya tersebar di berbagai file seperti config.php dan database.php. Tentunya hal ini sangatlah tidak praktis mengingat kita harus melakukan pengeditan di berbagai folder atau file php.

Beda halnya dengan Codeigniter 4 dan Laravel yang sudah support dengan file dotenv, dimana untuk setting konfigurasi seperti koneksi database dan nama app sudah disimpan dalam satu file yang bernama .env.

Apakah bisa menerapkan file .env di dalam sistem Codeigniter 3?

Yup, kenapa tidak. Kali ini kita akan mencoba mengimplementasikan file .env agar bisa kita pakai di Codeigniter 3

Pada kesempatan kali ini beberapa requirment yang admin gunakan adalah:

  • Codeigniter 3 lates version
  • Composer versi 2.5.5
  • PHP versi 7.4.21

 

Adapun langkah-langkah yang akan dilakukan

  1. Install package/library
  2. Konfigurasi File .env
  3. Buat Helper
  4. Implementasi

 

Instalasi Package/ Library

Pakcage yang kita gunakan adalah vlucas/phpdotenv

Adapun cara install menggunakan composer dengan command line seperti berikut

composer require vlucas/phpdotenv

Tunggu sampai proses instalasi selesai

Konfigurasi file dotenv

Setelah proses instalasi selesai, selanjutnya kita lakukan beberapa konfigurasi seperti berikut

Kita aktifkan dulu fitur autoload dari composer agar library bisa terbaca oleh sistem. Buka file application/config/config.php 

$config['composer_autoload'] = FALSE;
//ubah menjadi
$config['composer_autoload'] = 'vendor/autoload.php';

Selanjutnya kita aktifkan fitur hooks

$config['enable_hooks'] = TRUE;

Selanjutnya buatlah file .env kosong di root project CodeIgniter 3

Buka file application/config/hooks.php, dan tambahkan kode berikut

$hook['pre_system'] = function() {
    
    $dotenv = Dotenv\Dotenv::createImmutable(FCPATH);
    return $dotenv->load();
};

Tujuan kita aktifkan fitur hook, dan menambahkan function di dalam pre_system adalah agar file .env bisa di eksekusi sebelum system di dalam Codeigniter selesai dieksekusi

Karena file .env ada di folder root project codeigniter maka kita menggunakan FCPATH sebagai alamat direktori dimana file .env dibuat. 

Buat Helper

Selanjutnya kita buat sebuah helper yang berfungsi untuk memanggil variable di dalam file .env.

Sebenarnya variable env bisa kita panggil menggunakan helper bawaan php seperti $_SERVER[{VARIABLE}] atau pun $_ENV[{VARIABLE}], namun terkadang return valuenya null atau kosong, oleh karena itu kita coba buat helper untuk mengakomodir masalah itu.

Buatlah file baru bernama global_helper.php dan simpan di dalam folder application/helpers.

<?php

if (! function_exists('env')) {
    /**
     * Allows user to retrieve values from the environment
     * variables that have been set. Especially useful for
     * retrieving values set from the .env file for
     * use in config files.
     *
     * @param string|null $default
     *
     * @return bool|string|null
     */
    function env(string $key, $default = null)
    {
        $value = $_ENV[$key] ?? $_SERVER[$key] ?? getenv($key);

        // Not found? Return the default value
        if ($value === false) {
            return $default;
        }

        // Handle any boolean values
        switch (strtolower($value)) {
            case 'true':
                return true;

            case 'false':
                return false;

            case 'empty':
                return '';

            case 'null':
                return null;
        }

        return $value;
    }
}

Buka file autoload.php yang ada di folder application/config, dan tambahkan konfigurasi seperti berikut

$autoload['helper'] = array('global');

Fungsi kode di atas agar helper yang telah kita buat bisa kita panggil di dalam controller

 

Implementasi

Selanjutnya buka kembali file .env dan tambahkan variable berikut

DB_HOST="localhost"
DB_USERNAME="root"
DB_PASSWORD=""
DB_DATABASE="db_testing"

Variable di atas akan kita gunakan untuk konfigurasi koneksi ke database.

Buka file application/config/dabatase.php dan lakukan beberapa modifikasi

'hostname' => env("DB_HOST"),
'username' => env("DB_USERNAME"),
'password' => env("DB_PASSWORD"),
'database' => env("DB_DATABASE"),

Konfigurasi selesai.

Kalian bisa melakukan testing dengan cara query ke database kalian atau kalau kalian belum ada database kalian bisa test dengan cara buka controller Welcome.php. Didalam metod index() masukkan kode berikut

echo env("DB_HOST");

Demikian artikel kali ini. Selamat mencoba dan semoga artikel ini bermanfaat