public static function open(array $options = [])
    {
        // get the method passed in $options else use port
        $method = array_get($options, 'method', 'post');
        $attributes['method'] = self::getMethod($method);

        $attributes['action'] = self::getAction($options);
        $attributes['accept-charset'] = array_get($options, 'charset', 'UTF-8');
        //
        //PUT and PATCH and DELETE
        //
        //if form use files
        if (isset($options['files']) || in_array('files', $options)) {
            $options['enctype'] = 'multipart/form-data';
        }

        $attributes = array_merge(
            $attributes, array_except($options, self::$reserved)
        );

        $attributes = Html::attributes($attributes);

        $token = self::token();

        return '<form'.$attributes.'>'.$token;
    }