1<?php
2
3namespace dokuwiki\Form;
4
5/**
6 * Class TagCloseElement
7 *
8 * Creates an HTML close tag. You have to make sure it has been opened
9 * before or this will produce invalid HTML
10 *
11 * @package dokuwiki\Form
12 */
13class TagCloseElement extends ValueElement
14{
15    /**
16     * @param string $tag
17     * @param array $attributes
18     */
19    public function __construct($tag, $attributes = [])
20    {
21        parent::__construct('tagclose', $tag, $attributes);
22    }
23
24    /**
25     * do not call this
26     *
27     * @param string $class
28     * @return void
29     * @throws \BadMethodCallException
30     */
31    public function addClass($class)
32    {
33        throw new \BadMethodCallException('You can\t add classes to closing tag');
34    }
35
36    /**
37     * do not call this
38     *
39     * @param null|string $id
40     * @return string
41     * @throws \BadMethodCallException
42     */
43    public function id($id = null)
44    {
45        if ($id === null) {
46            return '';
47        } else {
48            throw new \BadMethodCallException('You can\t add ID to closing tag');
49        }
50    }
51
52    /**
53     * do not call this
54     *
55     * @param string $name
56     * @param null|string $value
57     * @return string
58     * @throws \BadMethodCallException
59     */
60    public function attr($name, $value = null)
61    {
62        if ($value === null) {
63            return '';
64        } else {
65            throw new \BadMethodCallException('You can\t add attributes to closing tag');
66        }
67    }
68
69    /**
70     * do not call this
71     *
72     * @param array|null $attributes
73     * @return array
74     * @throws \BadMethodCallException
75     */
76    public function attrs($attributes = null)
77    {
78        if ($attributes === null) {
79            return [];
80        } else {
81            throw new \BadMethodCallException('You can\t add attributes to closing tag');
82        }
83    }
84
85    /**
86     * The HTML representation of this element
87     *
88     * @return string
89     */
90    public function toHTML()
91    {
92        return '</' . $this->val() . '>';
93    }
94}
95