Environment Variables di NexaUI Framework

Pengenalan Environment Variables

Environment variables (variabel lingkungan) adalah cara untuk menyimpan konfigurasi yang sensitif atau konfigurasi yang berubah-ubah antar lingkungan (development, staging, production). NexaUI menggunakan environment variables untuk memisahkan konfigurasi dari kode aplikasi, sesuai dengan prinsip The Twelve-Factor App.

File .env

NexaUI menggunakan file .env untuk menyimpan environment variables. File ini tidak disertakan dalam version control (Git) untuk alasan keamanan. Sebagai gantinya, biasanya disediakan file .env.example sebagai template.

Contoh isi file .env:

# Application
APP_NAME=NexaUI
APP_ENV=development
APP_DEBUG=true
APP_URL=http://localhost
APP_KEY=base64:ABCDefgh12345678IJKLmnopQRSTuvwxYZ=

# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nexaui
DB_USERNAME=root
DB_PASSWORD=secret

# Mail
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Mengakses Environment Variables

NexaUI menyediakan beberapa cara untuk mengakses environment variables dalam aplikasi Anda:

1. Menggunakan $_ENV

Cara paling langsung untuk mengakses environment variables adalah melalui superglobal $_ENV:

$appName = $_ENV['APP_NAME'] ?? 'NexaUI';
$debug = ($_ENV['APP_DEBUG'] ?? 'false') === 'true';

2. Menggunakan Nexa::env()

NexaUI menyediakan method helper env() yang lebih aman dan mendukung nilai default:

use App\System\Nexa;

$appName = Nexa::env('APP_NAME', 'NexaUI');
$debug = Nexa::env('APP_DEBUG', false);
$port = Nexa::env('DB_PORT', 3306);

Method ini akan otomatis mengonversi nilai seperti 'true', 'false', 'null' ke tipe data PHP yang sesuai.

Environment Variables vs Configuration Files

Environment variables ideal untuk:

  • Kredensial database
  • API keys
  • Pengaturan yang berbeda antar environment
  • URL aplikasi
  • Mode debug

Untuk konfigurasi yang lebih kompleks atau yang tidak berubah antar environment, gunakan file konfigurasi (lihat dokumentasi Configuration Files).

Environment Detection

NexaUI dapat mendeteksi environment saat ini berdasarkan nilai APP_ENV:

// Memeriksa environment saat ini
if (Nexa::env('APP_ENV') === 'production') {
    // Kode khusus untuk production
} else {
    // Kode untuk non-production (development, staging, dll)
}

NexaUI juga menyediakan helper methods untuk memeriksa environment:

if (Nexa::isProduction()) {
    // Kode khusus untuk production
}

if (Nexa::isDevelopment()) {
    // Kode khusus untuk development
}

Keamanan

Beberapa praktik terbaik untuk keamanan environment variables:

  • Jangan pernah commit file .env ke version control
  • Gunakan nilai yang berbeda untuk environment yang berbeda
  • Batasi akses ke file .env di server produksi
  • Gunakan secret management service untuk produksi
  • Jangan tampilkan nilai environment variables dalam error messages

Environment Variables di Deployment

Pada lingkungan produksi, Anda memiliki beberapa opsi untuk mengelola environment variables:

  • File .env yang diupload secara manual ke server
  • Environment variables yang dikonfigurasi di level server/container
  • Secret management service seperti AWS Secrets Manager atau HashiCorp Vault
  • Environment variables yang dikonfigurasi di platform hosting (Heroku, Vercel, dll)