<?php
namespace App;

final class Env
{
    /** @var array<string,string> */
    private static $cache = [];

    public static function load($path)
    {
        if (!is_file($path)) return;

        $lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        if (!$lines) return;

        foreach ($lines as $line) {
            // Trim قبل از هرچیز تا دست به $str[0] نزنیم
            $t = trim($line);
            if ($t === '' ) continue;

            // کامنت (حتی اگر با فاصله شروع شده)
            if (isset($t[0]) && $t[0] === '#') continue;

            // پشتیبانی از "export KEY=VAL" بدون str_starts_with
            if (substr($t, 0, 7) === 'export ') {
                $t = substr($t, 7);
                if ($t === '' ) continue;
            }

            // باید مساوی داشته باشد
            $pos = strpos($t, '=');
            if ($pos === false) continue;

            $k = trim(substr($t, 0, $pos));
            $v = trim(substr($t, $pos + 1));

            // حذف کوتیشن‌های دوطرف مقدار
            if ($v !== '') {
                $first = $v[0];
                $last  = $v[strlen($v)-1];
                if (($first === '"' || $first === "'") && $last === $first) {
                    $v = substr($v, 1, -1);
                } elseif ($first === '"' || $first === "'") {
                    $v = substr($v, 1);
                }
            }

            // حذف کنترل‌کاراکترها و trim نهایی
            $v = preg_replace('/[\x00-\x1F\x7F]/', '', $v);
            if ($v === null) $v = '';
            $v = trim($v);

            self::$cache[$k] = $v;
            if (getenv($k) === false) {
                putenv("{$k}={$v}");
            }
        }
    }

    public static function get($key, $default = null)
    {
        $env = getenv($key);
        if (array_key_exists($key, self::$cache)) {
            $v = self::$cache[$key];
        } elseif ($env !== false) {
            $v = $env;
        } else {
            $v = $default;
        }
        return ($v === '') ? $default : $v;
    }
}
