Passed
Pull Request — master (#192)
by Sergei
03:20
created

Field::resetButton()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Form;
6
7
use RuntimeException;
8
use Yiisoft\Form\Field\Button;
9
use Yiisoft\Form\Field\Checkbox;
10
use Yiisoft\Form\Field\Date;
11
use Yiisoft\Form\Field\DateTime;
12
use Yiisoft\Form\Field\DateTimeLocal;
13
use Yiisoft\Form\Field\Email;
14
use Yiisoft\Form\Field\Hidden;
15
use Yiisoft\Form\Field\Image;
16
use Yiisoft\Form\Field\Number;
17
use Yiisoft\Form\Field\Part\Error;
18
use Yiisoft\Form\Field\Part\Hint;
19
use Yiisoft\Form\Field\Part\Label;
20
use Yiisoft\Form\Field\Password;
21
use Yiisoft\Form\Field\Range;
22
use Yiisoft\Form\Field\ResetButton;
23
use Yiisoft\Form\Field\Select;
24
use Yiisoft\Form\Field\SubmitButton;
25
use Yiisoft\Form\Field\Telephone;
26
use Yiisoft\Form\Field\Text;
27
use Yiisoft\Form\Field\Textarea;
28
use Yiisoft\Form\Field\Url;
29
30
use function array_key_exists;
31
32
final class Field
33
{
34
    /**
35
     * @psalm-var array<string,array>
36
     */
37
    private static array $configs = [
38
        'default' => [],
39
    ];
40
41
    private static string $defaultConfigName = 'default';
42
43
    /**
44
     * @psalm-var array<string,FieldFactory>
45
     */
46
    private static array $factories = [];
47
48
    /**
49
     * @psalm-param array<string,array> $configs
50
     */
51
    public static function initialize(array $configs = [], string $defaultConfigName = 'default'): void
52
    {
53
        self::$configs = array_merge(self::$configs, $configs);
54
        self::$defaultConfigName = $defaultConfigName;
55
    }
56
57 1
    public static function button(array $config = []): Button
58
    {
59 1
        return self::getFactory()->button($config);
60
    }
61
62 1
    public static function checkbox(FormModelInterface $formModel, string $attribute, array $config = []): Checkbox
63
    {
64 1
        return self::getFactory()->checkbox($formModel, $attribute, $config);
65
    }
66
67 1
    public static function date(FormModelInterface $formModel, string $attribute, array $config = []): Date
68
    {
69 1
        return self::getFactory()->date($formModel, $attribute, $config);
70
    }
71
72 1
    public static function dateTime(FormModelInterface $formModel, string $attribute, array $config = []): DateTime
73
    {
74 1
        return self::getFactory()->dateTime($formModel, $attribute, $config);
75
    }
76
77 1
    public static function dateTimeLocal(
78
        FormModelInterface $formModel,
79
        string $attribute,
80
        array $config = []
81
    ): DateTimeLocal {
82 1
        return self::getFactory()->dateTimeLocal($formModel, $attribute, $config);
83
    }
84
85 1
    public static function email(FormModelInterface $formModel, string $attribute, array $config = []): Email
86
    {
87 1
        return self::getFactory()->email($formModel, $attribute, $config);
88
    }
89
90 1
    public static function hidden(FormModelInterface $formModel, string $attribute, array $config = []): Hidden
91
    {
92 1
        return self::getFactory()->hidden($formModel, $attribute, $config);
93
    }
94
95 1
    public static function image(array $config = []): Image
96
    {
97 1
        return self::getFactory()->image($config);
98
    }
99
100 1
    public static function number(FormModelInterface $formModel, string $attribute, array $config = []): Number
101
    {
102 1
        return self::getFactory()->number($formModel, $attribute, $config);
103
    }
104
105 1
    public static function password(FormModelInterface $formModel, string $attribute, array $config = []): Password
106
    {
107 1
        return self::getFactory()->password($formModel, $attribute, $config);
108
    }
109
110 1
    public static function range(FormModelInterface $formModel, string $attribute, array $config = []): Range
111
    {
112 1
        return self::getFactory()->range($formModel, $attribute, $config);
113
    }
114
115 1
    public static function resetButton(array $config = []): ResetButton
116
    {
117 1
        return self::getFactory()->resetButton($config);
118
    }
119
120 1
    public static function select(FormModelInterface $formModel, string $attribute, array $config = []): Select
121
    {
122 1
        return self::getFactory()->select($formModel, $attribute, $config);
123
    }
124
125 1
    public static function submitButton(array $config = []): SubmitButton
126
    {
127 1
        return self::getFactory()->submitButton($config);
128
    }
129
130 1
    public static function telephone(FormModelInterface $formModel, string $attribute, array $config = []): Telephone
131
    {
132 1
        return self::getFactory()->telephone($formModel, $attribute, $config);
133
    }
134
135 1
    public static function text(FormModelInterface $formModel, string $attribute, array $config = []): Text
136
    {
137 1
        return self::getFactory()->text($formModel, $attribute, $config);
138
    }
139
140 1
    public static function textarea(FormModelInterface $formModel, string $attribute, array $config = []): Textarea
141
    {
142 1
        return self::getFactory()->textarea($formModel, $attribute, $config);
143
    }
144
145 1
    public static function url(FormModelInterface $formModel, string $attribute, array $config = []): Url
146
    {
147 1
        return self::getFactory()->url($formModel, $attribute, $config);
148
    }
149
150 1
    public static function label(FormModelInterface $formModel, string $attribute, array $config = []): Label
151
    {
152 1
        return self::getFactory()->label($formModel, $attribute, $config);
153
    }
154
155 1
    public static function hint(FormModelInterface $formModel, string $attribute, array $config = []): Hint
156
    {
157 1
        return self::getFactory()->hint($formModel, $attribute, $config);
158
    }
159
160 1
    public static function error(FormModelInterface $formModel, string $attribute, array $config = []): Error
161
    {
162 1
        return self::getFactory()->error($formModel, $attribute, $config);
163
    }
164
165
    /**
166
     * @psalm-template T
167
     * @psalm-param class-string<T> $class
168
     * @psalm-return T
169
     */
170
    public function input(string $class, FormModelInterface $formModel, string $attribute, array $config = []): object
171
    {
172
        return self::getFactory()->input($class, $formModel, $attribute, $config);
173
    }
174
175
    /**
176
     * @psalm-template T
177
     * @psalm-param class-string<T> $class
178
     * @psalm-return T
179
     */
180
    public function field(string $class, array $config = []): object
181
    {
182
        return self::getFactory()->field($class, $config);
183
    }
184
185 21
    public static function getFactory(?string $name = null): FieldFactory
186
    {
187 21
        $name = $name ?? self::$defaultConfigName;
188
189 21
        if (!array_key_exists($name, self::$factories)) {
190 1
            if (!array_key_exists($name, self::$configs)) {
191
                throw new RuntimeException(
192
                    sprintf('Configuration with name "%s" not found.', $name)
193
                );
194
            }
195
196
            /** @psalm-suppress MixedArgument */
197 1
            self::$factories[$name] = new FieldFactory(...self::$configs[$name]);
0 ignored issues
show
Bug introduced by
self::configs[$name] is expanded, but the parameter $containerTag of Yiisoft\Form\FieldFactory::__construct() does not expect variable arguments. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

197
            self::$factories[$name] = new FieldFactory(/** @scrutinizer ignore-type */ ...self::$configs[$name]);
Loading history...
198
        }
199
200 21
        return self::$factories[$name];
201
    }
202
}
203