<?php

namespace idoit\Component\Settings;

/**
 * i-doit Static DbSystem setting component
 *
 * @package     idoit\Component
 * @author      atsapko
 * @copyright   synetics GmbH
 * @license     http://www.i-doit.com/license
 */

class DbSystem extends Settings
{
    private $_settings;

    /**
     * @return DbSystem
     */
    public static function factory(): DbSystem
    {
        global $g_db_system;

        $settings = new self();

        $settings->_settings = $g_db_system;

        return $settings;
    }

    /**
     * @param null   $key
     * @param string $default
     *
     * @return mixed
     */
    public function get($key = null, $default = ''): mixed
    {
        if ($key == null) {
            return $this->_settings;
        }

        return (isset($this->_settings[$key]) ? $this->_settings[$key] : $default);
    }

    /**
     * @param string $key
     * @param mixed  $value
     *
     * @return $this
     */
    public function set($key, $value): static
    {
        $this->_settings[$key] = $value;

        return $this;
    }

    /**
     * @param array $setting
     *
     * @return void
     */
    public function extend($setting): void
    {
        $this->_settings = array_merge($this->_settings, (array)$setting);
    }

    /**
     * @param string $key
     *
     * @return void
     */
    public function remove($key): void
    {
        unset($this->_settings[$key]);
    }

    /**
     * @return void
     */
    public function save(): void
    {
    }
}
