<?php

namespace top\library;

/**
 * 配置类
 * @author topnuomi 2018年11月20日
 */
class Config
{

    // 已加载的文件
    private static $files;

    private static $instance;

    // 保存配置的变量
    private $config = [];

    private function __construct()
    {
    }

    private function __clone()
    {
    }

    public static function instance()
    {
        if (!self::$instance) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    /**
     * 添加配置
     * @param string $name
     * @param string $value
     */
    public function set($name, $value)
    {
        // 组合为数组
        $config = [
            $name => $value
        ];

        // 与原有的配置项合并
        $this->config = array_merge($this->config, $config);
    }

    /**
     * 获取配置
     * @param string $name
     * @return array|mixed
     * @throws \Exception
     */
    public function get($name = '')
    {
        // 加载文件
        $module = Register::get('Router')->module;
        $file = APP_PATH . $module . '/config/config.php';
        if (!isset(self::$files[$file])) {
            if (file_exists($file)) {
                $config = require $file;
                // 与原有的配置项合并
                $this->config = array_merge($this->config, $config);
                self::$files[$file] = true;
            }
        }

        if (empty($this->config)
            || !isset($this->config)
            || !$this->config
            || !isset($this->config[$name])
            || !$this->config[$name]
        ) {
            return [];
        }

        return $this->config[$name];
    }

    /**
     * 从配置中删除某项
     * @param string $name
     */
    public function _unset($name)
    {
        unset($this->config[$name]);
    }
}