Skip to content

Commit d532e94

Browse files
committed
Create mixin with rules names as methods
One of the reasons for this change is to spare some space on the Validator class, leaving only real code there. However, the biggest reason is that IDEs can auto-complete rules after Validator creates the first rule. Signed-off-by: Henrique Moody <[email protected]>
1 parent 1809e9f commit d532e94

File tree

4 files changed

+779
-155
lines changed

4 files changed

+779
-155
lines changed

library/ChainedValidator.php

+387
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,387 @@
1+
<?php
2+
3+
/*
4+
* This file is part of Respect/Validation.
5+
*
6+
* (c) Alexandre Gomes Gaigalas <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE file
9+
* that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace Respect\Validation;
15+
16+
use finfo;
17+
use Respect\Validation\Rules\Key;
18+
use Symfony\Component\Validator\Constraint;
19+
use Symfony\Component\Validator\Validator\ValidatorInterface as SymfonyValidator;
20+
use Zend\Validator\ValidatorInterface as ZendValidator;
21+
22+
interface ChainedValidator extends Validatable
23+
{
24+
public function allOf(Validatable ...$rule): ChainedValidator;
25+
26+
public function alnum(string ...$additionalChars): ChainedValidator;
27+
28+
public function alpha(string ...$additionalChars): ChainedValidator;
29+
30+
public function alwaysInvalid(): ChainedValidator;
31+
32+
public function alwaysValid(): ChainedValidator;
33+
34+
public function anyOf(Validatable ...$rule): ChainedValidator;
35+
36+
public function arrayType(): ChainedValidator;
37+
38+
public function arrayVal(): ChainedValidator;
39+
40+
public function attribute(
41+
string $reference,
42+
?Validatable $validator = null,
43+
bool $mandatory = true
44+
): ChainedValidator;
45+
46+
public function base(int $base, ?string $chars = null): ChainedValidator;
47+
48+
public function base64(): ChainedValidator;
49+
50+
/**
51+
* @param mixed $minimum
52+
* @param mixed $maximum
53+
*/
54+
public function between($minimum, $maximum): ChainedValidator;
55+
56+
public function bic(string $countryCode): ChainedValidator;
57+
58+
public function boolType(): ChainedValidator;
59+
60+
public function boolVal(): ChainedValidator;
61+
62+
public function bsn(): ChainedValidator;
63+
64+
public function call(callable $callable, Validatable $rule): ChainedValidator;
65+
66+
public function callableType(): ChainedValidator;
67+
68+
public function callback(callable $callback): ChainedValidator;
69+
70+
public function charset(string ...$charset): ChainedValidator;
71+
72+
public function cnh(): ChainedValidator;
73+
74+
public function cnpj(): ChainedValidator;
75+
76+
public function control(string ...$additionalChars): ChainedValidator;
77+
78+
public function consonant(string ...$additionalChars): ChainedValidator;
79+
80+
/**
81+
* @param mixed $containsValue
82+
*/
83+
public function contains($containsValue, bool $identical = false): ChainedValidator;
84+
85+
/**
86+
* @param mixed[] $needles
87+
*/
88+
public function containsAny(array $needles, bool $strictCompareArray = false): ChainedValidator;
89+
90+
public function countable(): ChainedValidator;
91+
92+
public function countryCode(?string $set = null): ChainedValidator;
93+
94+
public function currencyCode(): ChainedValidator;
95+
96+
public function cpf(): ChainedValidator;
97+
98+
public function creditCard(?string $brand = null): ChainedValidator;
99+
100+
public function date(string $format = 'Y-m-d'): ChainedValidator;
101+
102+
public function dateTime(?string $format = null): ChainedValidator;
103+
104+
public function digit(string ...$additionalChars): ChainedValidator;
105+
106+
public function directory(): ChainedValidator;
107+
108+
public function domain(bool $tldCheck = true): ChainedValidator;
109+
110+
public function each(Validatable $rule): ChainedValidator;
111+
112+
public function email(): ChainedValidator;
113+
114+
/**
115+
* @param mixed $endValue
116+
*/
117+
public function endsWith($endValue, bool $identical = false): ChainedValidator;
118+
119+
/**
120+
* @param mixed $compareTo
121+
*/
122+
public function equals($compareTo): ChainedValidator;
123+
124+
/**
125+
* @param mixed $compareTo
126+
*/
127+
public function equivalent($compareTo): ChainedValidator;
128+
129+
public function even(): ChainedValidator;
130+
131+
public function executable(): ChainedValidator;
132+
133+
public function exists(): ChainedValidator;
134+
135+
public function extension(string $extension): ChainedValidator;
136+
137+
public function factor(int $dividend): ChainedValidator;
138+
139+
public function falseVal(): ChainedValidator;
140+
141+
public function fibonacci(): ChainedValidator;
142+
143+
public function file(): ChainedValidator;
144+
145+
/**
146+
* @param mixed[]|int $options
147+
*/
148+
public function filterVar(int $filter, $options = null): ChainedValidator;
149+
150+
public function finite(): ChainedValidator;
151+
152+
public function floatVal(): ChainedValidator;
153+
154+
public function floatType(): ChainedValidator;
155+
156+
public function graph(string ...$additionalChars): ChainedValidator;
157+
158+
/**
159+
* @param mixed $compareTo
160+
*/
161+
public function greaterThan($compareTo): ChainedValidator;
162+
163+
public function hexRgbColor(): ChainedValidator;
164+
165+
public function iban(): ChainedValidator;
166+
167+
/**
168+
* @param mixed $compareTo
169+
*/
170+
public function identical($compareTo): ChainedValidator;
171+
172+
public function image(?finfo $fileInfo = null): ChainedValidator;
173+
174+
public function imei(): ChainedValidator;
175+
176+
/**
177+
* @param mixed[]|mixed $haystack
178+
*/
179+
public function in($haystack, bool $compareIdentical = false): ChainedValidator;
180+
181+
public function infinite(): ChainedValidator;
182+
183+
public function instance(string $instanceName): ChainedValidator;
184+
185+
public function intVal(): ChainedValidator;
186+
187+
public function intType(): ChainedValidator;
188+
189+
public function ip(string $range = '*', ?int $options = null): ChainedValidator;
190+
191+
public function isbn(): ChainedValidator;
192+
193+
public function iterableType(): ChainedValidator;
194+
195+
public function json(): ChainedValidator;
196+
197+
public function key(
198+
string $reference,
199+
?Validatable $referenceValidator = null,
200+
bool $mandatory = true
201+
): ChainedValidator;
202+
203+
public function keyNested(
204+
string $reference,
205+
?Validatable $referenceValidator = null,
206+
bool $mandatory = true
207+
): ChainedValidator;
208+
209+
public function keySet(Key ...$rule): ChainedValidator;
210+
211+
public function keyValue(string $comparedKey, string $ruleName, string $baseKey): ChainedValidator;
212+
213+
public function languageCode(?string $set = null): ChainedValidator;
214+
215+
public function leapDate(string $format): ChainedValidator;
216+
217+
public function leapYear(): ChainedValidator;
218+
219+
public function length(?int $min = null, ?int $max = null, bool $inclusive = true): ChainedValidator;
220+
221+
public function lowercase(): ChainedValidator;
222+
223+
/**
224+
* @param mixed $compareTo
225+
*/
226+
public function lessThan($compareTo): ChainedValidator;
227+
228+
public function luhn(): ChainedValidator;
229+
230+
public function macAddress(): ChainedValidator;
231+
232+
/**
233+
* @param mixed $compareTo
234+
*/
235+
public function max($compareTo): ChainedValidator;
236+
237+
public function maxAge(int $age, ?string $format = null): ChainedValidator;
238+
239+
public function mimetype(string $mimetype): ChainedValidator;
240+
241+
/**
242+
* @param mixed $compareTo
243+
*/
244+
public function min($compareTo): ChainedValidator;
245+
246+
public function minAge(int $age, ?string $format = null): ChainedValidator;
247+
248+
public function multiple(int $multipleOf): ChainedValidator;
249+
250+
public function negative(): ChainedValidator;
251+
252+
public function nfeAccessKey(): ChainedValidator;
253+
254+
public function nif(): ChainedValidator;
255+
256+
public function nip(): ChainedValidator;
257+
258+
public function no(bool $useLocale = false): ChainedValidator;
259+
260+
public function noneOf(Validatable ...$rule): ChainedValidator;
261+
262+
public function not(Validatable $rule): ChainedValidator;
263+
264+
public function notBlank(): ChainedValidator;
265+
266+
public function notEmoji(): ChainedValidator;
267+
268+
public function notEmpty(): ChainedValidator;
269+
270+
public function notOptional(): ChainedValidator;
271+
272+
public function noWhitespace(): ChainedValidator;
273+
274+
public function nullable(Validatable $rule): ChainedValidator;
275+
276+
public function nullType(): ChainedValidator;
277+
278+
public function number(): ChainedValidator;
279+
280+
public function numericVal(): ChainedValidator;
281+
282+
public function objectType(): ChainedValidator;
283+
284+
public function odd(): ChainedValidator;
285+
286+
public function oneOf(Validatable ...$rule): ChainedValidator;
287+
288+
public function optional(Validatable $rule): ChainedValidator;
289+
290+
public function perfectSquare(): ChainedValidator;
291+
292+
public function pesel(): ChainedValidator;
293+
294+
public function phone(): ChainedValidator;
295+
296+
public function phpLabel(): ChainedValidator;
297+
298+
public function pis(): ChainedValidator;
299+
300+
public function polishIdCard(): ChainedValidator;
301+
302+
public function positive(): ChainedValidator;
303+
304+
public function postalCode(string $countryCode): ChainedValidator;
305+
306+
public function primeNumber(): ChainedValidator;
307+
308+
public function printable(string ...$additionalChars): ChainedValidator;
309+
310+
public function punct(string ...$additionalChars): ChainedValidator;
311+
312+
public function readable(): ChainedValidator;
313+
314+
public function regex(string $regex): ChainedValidator;
315+
316+
public function resourceType(): ChainedValidator;
317+
318+
public function roman(): ChainedValidator;
319+
320+
public function scalarVal(): ChainedValidator;
321+
322+
public function sf(Constraint $constraint, ?SymfonyValidator $validator = null): ChainedValidator;
323+
324+
public function size(?string $minSize = null, ?string $maxSize = null): ChainedValidator;
325+
326+
public function slug(): ChainedValidator;
327+
328+
public function sorted(string $direction): ChainedValidator;
329+
330+
public function space(string ...$additionalChars): ChainedValidator;
331+
332+
/**
333+
* @param mixed $startValue
334+
*/
335+
public function startsWith($startValue, bool $identical = false): ChainedValidator;
336+
337+
public function stringType(): ChainedValidator;
338+
339+
public function stringVal(): ChainedValidator;
340+
341+
public function subdivisionCode(string $countryCode): ChainedValidator;
342+
343+
/**
344+
* @param mixed[] $superset
345+
*/
346+
public function subset(array $superset): ChainedValidator;
347+
348+
public function symbolicLink(): ChainedValidator;
349+
350+
public function time(string $format = 'H:i:s'): ChainedValidator;
351+
352+
public function tld(): ChainedValidator;
353+
354+
public function trueVal(): ChainedValidator;
355+
356+
public function type(string $type): ChainedValidator;
357+
358+
public function unique(): ChainedValidator;
359+
360+
public function uploaded(): ChainedValidator;
361+
362+
public function uppercase(): ChainedValidator;
363+
364+
public function url(): ChainedValidator;
365+
366+
public function uuid(?int $version = null): ChainedValidator;
367+
368+
public function version(): ChainedValidator;
369+
370+
public function videoUrl(?string $service = null): ChainedValidator;
371+
372+
public function vowel(string ...$additionalChars): ChainedValidator;
373+
374+
public function when(Validatable $if, Validatable $then, ?Validatable $else = null): ChainedValidator;
375+
376+
public function writable(): ChainedValidator;
377+
378+
public function xdigit(string ...$additionalChars): ChainedValidator;
379+
380+
public function yes(bool $useLocale = false): ChainedValidator;
381+
382+
/**
383+
* @param string|ZendValidator $validator
384+
* @param mixed[] $params
385+
*/
386+
public function zend($validator, ?array $params = null): ChainedValidator;
387+
}

0 commit comments

Comments
 (0)