Get the option of Norm configuration.

@method options

@param string $key
@param string $value

@return mixed
963002
public static function options($key, $value = ':get:')
    {
        if (is_array($key)) {
            foreach ($key as $k => $v) {
                static::$options($k, $v);
            }

            return;
        }

        if ($value === ':get:') {
            return isset(static::$options[$key]) ? static::$options[$key] : null;
        }

        static::$options[$key] = $value;
    }
874427
public function getOption($key, ...$keys)
    {
        $method = 'get' . Str::toCamelCase($key);
        if (method_exists($this, $method)) {
            return $this->$method($key, ...$keys);
        }
        return Collection::get($this->options, $key, ...$keys);
    }
679493
public function getOptions($key = null)
    {
        if ($key == null) {
            return $this->options;
        } else {
            return $this->options[$key];
        }
    }
430809
public function getConfiguration($key = null)
    {
        return isset($this->_args[ $key ]) ? $this->_args[ $key ] : null;
    }
806783
public static function getSetting($key, $value = null)
    {
        $data = ini_get($key);
        if ($data === false) {
            throw new \InvalidArgumentException(sprintf("Invalid PHP setting '%s'", $key));
        }

        if ($value === null) {
            return $data;
        } else {
            ini_set($key, $value);
        }
    }
923466
public function setOption($key, $value=null)
	{
	    if (is_array($key)) {
	        foreach ($key as $k => $v) {
	            $this->setOption($k, $v);
	        }
	    } else {
	        $this->options[$key] = $value;
	    }
	}
883235
public function option($key, String $value = NULL)
    {
        if( is_array($key) )
        {
            $this->settings['option'] = $key;
        }
        else
        {
            $this->settings['option'][$key] = $value;
        }

        return $this;
    }
950525
public function config($key = null, $value = null, $override = false)
    {
        if (is_array($key) && is_bool($value)) {
            $override = $value;
        }

        return Util::operateArray($this->config, $key, $value, null, null, $override);
    }
780035
public function getKey($value): Option
	{
		if ($this->containsValue($value))
		{
			return new Option(array_search($value, $this->data, true), true);
		}
		else
		{
			return new Option(null, false);
		}
	}
1020165
public function modelOptions($model, $value, $key = 'id')
    {
        return $this->options(
            Options::model($model, $value, $key)
        );
    }
952502
public function option($name = null, $config = [], $value = null)
    {
        $defaults = [
            'type'    => 'string',
            'group'   => false,
            'array'   => false,
            'value'   => null,
            'default' => null
        ];
        if (func_num_args() === 1) {
            if (isset($this->_options[$name])) {
                return $this->_options[$name];
            }
            return $defaults;
        }
        $config = is_array($config) ? $config + $defaults : [$config => $value] + $this->option($name);

        $this->_options[$name] = $config;

        list($key, $extra) = $this->_splitOptionName($name);

        if ($extra) {
            $this->option($key, ['group' => true, 'array' => true]);
        }
        if ($config['default'] !== null) {
            $this->_defaults[$key][$extra] = $this->_get($name);
        }

        return $config;
    }
727341
public function getOption($key)
    {
        $this->checkOptionKey($key);

        return isset($this->_options[$key]) ? $this->_options[$key] : $this->defaultOptions[$key];
    }
1366879
public function getOption(string $key)
    {
        if (array_key_exists($key, $this->options)) {
            return $this->options[$key];
        }

        throw new Exception('Invalid option key "' . $key . '".', Exception::INVALID_OPTION);
    }
738898
public function getOption($key)
    {
        if (!$this->hasOption($key)) {
            throw new Exception\InvalidArgumentException(
                "Option " . $key . " not defined on "
                . $this->reflection->getClassName() . "::$"
                . $this->name . "!"
            );
        }
        return $this->options[$key];
    }
1164477
public function offsetGet($key) {

    $resolved_key = $this->arguments_spec->normalizeOptionName($key);
    if ($resolved_key === null) {
      if (isset($this->merged_arg_values[$key])) {
        return parent::offsetGet($key);
      }
    }

    if (isset($this->merged_arg_values[$resolved_key])) {
      return parent::offsetGet($resolved_key);
    }

    return null;
  }
730237
public function getOptionsByValue($value)
    {
        $options = array();

        foreach ($this->options as $option) {
            if ($option->value === $value) {
                $options[] = $option;
            }
        }

        return $options;
    }
250215
private function normalizeValues($key, $value)
    {
        $subItemsToNormalize = [
            MetaDataProvider::METADATA_DESCRIPTION,
            MetaDataProvider::METADATA_BLOCKS,
            MetaDataProvider::METADATA_SETTINGS
        ];
        if (\is_array($value) && in_array($key, $subItemsToNormalize, true)) {
            $normalizedValue = $this->lowerCaseArrayKeysRecursive($value);
        } else {
            $normalizedValue = $value;
        }

        return $normalizedValue;
    }