Test Failed
Pull Request — master (#192)
by Sergei
02:42
created

Field   A

Complexity

Total Complexity 33

Size/Duplication

Total Lines 202
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 42
dl 0
loc 202
rs 9.76
c 2
b 0
f 0
wmc 33

31 Methods

Rating   Name   Duplication   Size   Complexity  
A errorSummary() 0 3 1
A hint() 0 3 1
A telephone() 0 3 1
A error() 0 3 1
A dateTimeLocal() 0 6 1
A initialize() 0 4 1
A input() 0 3 1
A text() 0 3 1
A image() 0 3 1
A checkboxList() 0 6 1
A field() 0 3 1
A submitButton() 0 3 1
A select() 0 3 1
A button() 0 3 1
A fieldset() 0 3 1
A checkbox() 0 3 1
A range() 0 3 1
A getFactory() 0 16 3
A resetButton() 0 3 1
A radioList() 0 3 1
A dateTime() 0 3 1
A number() 0 3 1
A password() 0 3 1
A email() 0 3 1
A date() 0 3 1
A label() 0 3 1
A url() 0 3 1
A textarea() 0 3 1
A hidden() 0 3 1
A buttonGroup() 0 3 1
A file() 0 3 1
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\ButtonGroup;
10
use Yiisoft\Form\Field\Checkbox;
11
use Yiisoft\Form\Field\CheckboxList;
12
use Yiisoft\Form\Field\Date;
13
use Yiisoft\Form\Field\DateTime;
14
use Yiisoft\Form\Field\DateTimeLocal;
15
use Yiisoft\Form\Field\Email;
16
use Yiisoft\Form\Field\ErrorSummary;
17
use Yiisoft\Form\Field\Fieldset;
18
use Yiisoft\Form\Field\File;
19
use Yiisoft\Form\Field\Hidden;
20
use Yiisoft\Form\Field\Image;
21
use Yiisoft\Form\Field\Number;
22
use Yiisoft\Form\Field\Part\Error;
23
use Yiisoft\Form\Field\Part\Hint;
24
use Yiisoft\Form\Field\Part\Label;
25
use Yiisoft\Form\Field\Password;
26
use Yiisoft\Form\Field\RadioList;
27
use Yiisoft\Form\Field\Range;
28
use Yiisoft\Form\Field\ResetButton;
29
use Yiisoft\Form\Field\Select;
30
use Yiisoft\Form\Field\SubmitButton;
31
use Yiisoft\Form\Field\Telephone;
32
use Yiisoft\Form\Field\Text;
33
use Yiisoft\Form\Field\Textarea;
34
use Yiisoft\Form\Field\Url;
35
36
use function array_key_exists;
37
38
final class Field
39
{
40
    /**
41
     * @psalm-var array<string,array>
42
     */
43
    private static array $configs = [
44
        'default' => [],
45
    ];
46
47
    private static string $defaultConfigName = 'default';
48
49
    /**
50
     * @psalm-var array<string,FieldFactory>
51
     */
52
    private static array $factories = [];
53
54
    /**
55
     * @psalm-param array<string,array> $configs
56
     */
57
    public static function initialize(array $configs = [], string $defaultConfigName = 'default'): void
58
    {
59
        self::$configs = array_merge(self::$configs, $configs);
60
        self::$defaultConfigName = $defaultConfigName;
61
    }
62
63
    public static function button(array $config = []): Button
64
    {
65
        return self::getFactory()->button($config);
66
    }
67
68
    public static function buttonGroup(array $config = []): ButtonGroup
69
    {
70
        return self::getFactory()->buttonGroup($config);
71
    }
72
73
    public static function checkbox(FormModelInterface $formModel, string $attribute, array $config = []): Checkbox
74
    {
75
        return self::getFactory()->checkbox($formModel, $attribute, $config);
76
    }
77
78
    public static function checkboxList(
79
        FormModelInterface $formModel,
80
        string $attribute,
81
        array $config = []
82
    ): CheckboxList {
83
        return self::getFactory()->checkboxList($formModel, $attribute, $config);
84
    }
85
86
    public static function date(FormModelInterface $formModel, string $attribute, array $config = []): Date
87
    {
88
        return self::getFactory()->date($formModel, $attribute, $config);
89
    }
90
91
    public static function dateTime(FormModelInterface $formModel, string $attribute, array $config = []): DateTime
92
    {
93
        return self::getFactory()->dateTime($formModel, $attribute, $config);
94
    }
95
96
    public static function dateTimeLocal(
97
        FormModelInterface $formModel,
98
        string $attribute,
99
        array $config = []
100
    ): DateTimeLocal {
101
        return self::getFactory()->dateTimeLocal($formModel, $attribute, $config);
102
    }
103
104
    public static function email(FormModelInterface $formModel, string $attribute, array $config = []): Email
105
    {
106
        return self::getFactory()->email($formModel, $attribute, $config);
107
    }
108
109
    public static function errorSummary(FormModelInterface $formModel, array $config = []): ErrorSummary
110
    {
111
        return self::getFactory()->errorSummary($formModel, $config);
112
    }
113
114
    public static function fieldset(array $config = []): Fieldset
115
    {
116
        return self::getFactory()->fieldset($config);
117
    }
118
119
    public static function file(FormModelInterface $formModel, string $attribute, array $config = []): File
120
    {
121
        return self::getFactory()->file($formModel, $attribute, $config);
122
    }
123
124
    public static function hidden(FormModelInterface $formModel, string $attribute, array $config = []): Hidden
125
    {
126
        return self::getFactory()->hidden($formModel, $attribute, $config);
127
    }
128
129
    public static function image(array $config = []): Image
130
    {
131
        return self::getFactory()->image($config);
132
    }
133
134
    public static function number(FormModelInterface $formModel, string $attribute, array $config = []): Number
135
    {
136
        return self::getFactory()->number($formModel, $attribute, $config);
137
    }
138
139
    public static function password(FormModelInterface $formModel, string $attribute, array $config = []): Password
140
    {
141
        return self::getFactory()->password($formModel, $attribute, $config);
142
    }
143
144
    public static function radioList(FormModelInterface $formModel, string $attribute, array $config = []): RadioList
145
    {
146
        return self::getFactory()->radioList($formModel, $attribute, $config);
147
    }
148
149
    public static function range(FormModelInterface $formModel, string $attribute, array $config = []): Range
150
    {
151
        return self::getFactory()->range($formModel, $attribute, $config);
152
    }
153
154
    public static function resetButton(array $config = []): ResetButton
155
    {
156
        return self::getFactory()->resetButton($config);
157
    }
158
159
    public static function select(FormModelInterface $formModel, string $attribute, array $config = []): Select
160
    {
161
        return self::getFactory()->select($formModel, $attribute, $config);
162
    }
163
164
    public static function submitButton(array $config = []): SubmitButton
165
    {
166
        return self::getFactory()->submitButton($config);
167
    }
168
169
    public static function telephone(FormModelInterface $formModel, string $attribute, array $config = []): Telephone
170
    {
171
        return self::getFactory()->telephone($formModel, $attribute, $config);
172
    }
173
174
    public static function text(FormModelInterface $formModel, string $attribute, array $config = []): Text
175
    {
176
        return self::getFactory()->text($formModel, $attribute, $config);
177
    }
178
179
    public static function textarea(FormModelInterface $formModel, string $attribute, array $config = []): Textarea
180
    {
181
        return self::getFactory()->textarea($formModel, $attribute, $config);
182
    }
183
184
    public static function url(FormModelInterface $formModel, string $attribute, array $config = []): Url
185
    {
186
        return self::getFactory()->url($formModel, $attribute, $config);
187
    }
188
189
    public static function label(FormModelInterface $formModel, string $attribute, array $config = []): Label
190
    {
191
        return self::getFactory()->label($formModel, $attribute, $config);
192
    }
193
194
    public static function hint(FormModelInterface $formModel, string $attribute, array $config = []): Hint
195
    {
196
        return self::getFactory()->hint($formModel, $attribute, $config);
197
    }
198
199
    public static function error(FormModelInterface $formModel, string $attribute, array $config = []): Error
200
    {
201
        return self::getFactory()->error($formModel, $attribute, $config);
202
    }
203
204
    /**
205
     * @psalm-template T
206
     * @psalm-param class-string<T> $class
207
     * @psalm-return T
208
     */
209
    public static function input(string $class, FormModelInterface $formModel, string $attribute, array $config = []): object
210
    {
211
        return self::getFactory()->input($class, $formModel, $attribute, $config);
212
    }
213
214
    /**
215
     * @psalm-template T
216
     * @psalm-param class-string<T> $class
217
     * @psalm-return T
218
     */
219
    public static function field(string $class, array $config = []): object
220
    {
221
        return self::getFactory()->field($class, $config);
222
    }
223
224
    public static function getFactory(?string $name = null): FieldFactory
225
    {
226
        $name = $name ?? self::$defaultConfigName;
227
228
        if (!array_key_exists($name, self::$factories)) {
229
            if (!array_key_exists($name, self::$configs)) {
230
                throw new RuntimeException(
231
                    sprintf('Configuration with name "%s" not found.', $name)
232
                );
233
            }
234
235
            /** @psalm-suppress MixedArgument */
236
            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

236
            self::$factories[$name] = new FieldFactory(/** @scrutinizer ignore-type */ ...self::$configs[$name]);
Loading history...
237
        }
238
239
        return self::$factories[$name];
240
    }
241
}
242