input

    public function input()
    {
        return _class('html')->input('input_name', 'some value');
    }
    public function input($name = '', $value = '', $extra = [])
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = $extra['name'];
        }
        if ( ! is_array($extra)) {
            $extra = [];
        }
        $extra['name'] = ($extra['name'] ?? null) ?: ($name ?: 'text');
        $extra['value'] = _escape_tpl_braces($extra['value'] ?: $value);
        $extra['id'] = ($extra['id'] ?? null) ?: __FUNCTION__ . '_' . ($this->_ids[__FUNCTION__] = ($this->_ids[__FUNCTION__] ?? 0) + 1);
        $extra['desc'] = ($extra['desc'] ?? null) ?: ucfirst(str_replace('_', '', $extra['name']));
        $extra['type'] = ($extra['type'] ?? null) ?: 'text';
        $extra['placeholder'] = _escape_tpl_braces($extra['placeholder'] ? t($extra['placeholder']) : $extra['desc']);
        $extra['title'] = _escape_tpl_braces($extra['title'] ?? null);
        $extra['class'] = isset($extra['class']) ? $extra['class'] : $this->CLASS_INPUT;
        if ($extra['class_add']) {
            $extra['class'] = trim($extra['class'] . ' ' . $extra['class_add']);
        }
        $attrs_names = ['name', 'type', 'id', 'class', 'style', 'placeholder', 'value', 'data', 'size', 'maxlength', 'pattern', 'disabled', 'required', 'autocomplete', 'accept', 'target', 'autofocus', 'title', 'min', 'max', 'step', 'readonly'];
        return '<input' . _attrs($extra, $attrs_names) . '>';
    }