56 lines
1.6 KiB
PHP
56 lines
1.6 KiB
PHP
<?php
|
|
/**
|
|
* Loader .env sederhana (tanpa dependency external)
|
|
* Membaca file .env dari root project dan mengisi $_ENV / getenv()
|
|
*
|
|
* Cara pakai:
|
|
* require_once __DIR__ . '/env_loader.php';
|
|
* $val = env('DB_HOST', 'localhost');
|
|
*/
|
|
|
|
function loadEnv(string $path): void {
|
|
if (!file_exists($path)) {
|
|
return; // File .env tidak ada, gunakan nilai default
|
|
}
|
|
|
|
$lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
|
foreach ($lines as $line) {
|
|
// Skip komentar
|
|
$line = trim($line);
|
|
if ($line === '' || str_starts_with($line, '#')) {
|
|
continue;
|
|
}
|
|
|
|
// Pisahkan KEY=VALUE (hanya split di tanda = pertama)
|
|
$eqPos = strpos($line, '=');
|
|
if ($eqPos === false) continue;
|
|
|
|
$key = trim(substr($line, 0, $eqPos));
|
|
$value = trim(substr($line, $eqPos + 1));
|
|
|
|
// Hapus kutip jika ada ("value" atau 'value')
|
|
if (
|
|
(str_starts_with($value, '"') && str_ends_with($value, '"')) ||
|
|
(str_starts_with($value, "'") && str_ends_with($value, "'"))
|
|
) {
|
|
$value = substr($value, 1, -1);
|
|
}
|
|
|
|
// Set ke $_ENV dan putenv agar bisa diakses lewat getenv()
|
|
if (!array_key_exists($key, $_ENV)) {
|
|
$_ENV[$key] = $value;
|
|
putenv("$key=$value");
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Helper: ambil nilai env dengan fallback default
|
|
*/
|
|
function env(string $key, mixed $default = null): mixed {
|
|
return $_ENV[$key] ?? getenv($key) ?: $default;
|
|
}
|
|
|
|
// Auto-load .env dari root poverty (satu level di atas /api)
|
|
loadEnv(dirname(__DIR__) . DIRECTORY_SEPARATOR . '.env');
|