public static function get( $type, $key, $defaultValue = null, $filter = FILTER_DEFAULT, $filterOptions = null, $emptyValueIsNull = false )
    {
        //	Allow usage as filter_var()
        if ( is_array( $type ) )
        {
            $_result = filter_var( Option::get( $type, $key, $defaultValue ), $filter, $filterOptions );

            return $emptyValueIsNull && empty( $_result ) ? null : $_result;
        }

        $_haystack = null;

        //	Based on the type, pull the right value
        switch ( $type )
        {
            case INPUT_REQUEST:
                $_haystack = isset( $_REQUEST ) ? $_REQUEST : array();
                break;
            case INPUT_SESSION:
                $_haystack = isset( $_SESSION ) ? $_SESSION : array();
                break;
            case INPUT_GET:
                $_haystack = isset( $_GET ) ? $_GET : array();
                break;
            case INPUT_POST:
                $_haystack = isset( $_POST ) ? $_POST : array();
                break;
            case INPUT_COOKIE:
                $_haystack = isset( $_COOKIE ) ? $_COOKIE : array();
                break;
            case INPUT_SERVER:
                $_haystack = isset( $_SERVER ) ? $_SERVER : array();
                break;
            case INPUT_ENV:
                $_haystack = isset( $_ENV ) ? $_ENV : array();
                break;
            default:
                //	No clue what you want man...
                throw new \InvalidArgumentException( 'The filter type of "' . $type . '" is unknown or not supported.' );
        }

        $_value = empty( $_haystack ) ? $defaultValue : filter_var( Option::get( $_haystack, $key, $defaultValue ), $filter, $filterOptions );

        return $emptyValueIsNull && empty( $_value ) ? null : $_value;
    }