diff --git a/system/Validation/CreditCardRules.php b/system/Validation/CreditCardRules.php index e484c35f66cb..a31b303fcb86 100644 --- a/system/Validation/CreditCardRules.php +++ b/system/Validation/CreditCardRules.php @@ -31,7 +31,7 @@ class CreditCardRules * prefixes - List of possible prefixes for the card * checkdigit - Boolean on whether we should do a modulus10 check on the numbers. * - * @var array + * @var array */ protected $cards = [ 'American Express' => [ diff --git a/system/Validation/DotArrayFilter.php b/system/Validation/DotArrayFilter.php index 673fe67ed138..8e059c3661ae 100644 --- a/system/Validation/DotArrayFilter.php +++ b/system/Validation/DotArrayFilter.php @@ -21,10 +21,10 @@ final class DotArrayFilter /** * Creates a new array with only the elements specified in dot array syntax. * - * @param array $indexes The dot array syntax pattern to use for filtering. - * @param array $array The array to filter. + * @param list $indexes The dot array syntax pattern to use for filtering. + * @param array $array The array to filter. * - * @return array The filtered array. + * @return array The filtered array. */ public static function run(array $indexes, array $array): array { @@ -47,10 +47,10 @@ public static function run(array $indexes, array $array): array /** * Used by `run()` to recursively filter the array with wildcards. * - * @param array $indexes The dot array syntax pattern to use for filtering. - * @param array $array The array to filter. + * @param list $indexes The dot array syntax pattern to use for filtering. + * @param array $array The array to filter. * - * @return array The filtered array. + * @return array The filtered array. */ private static function filter(array $indexes, array $array): array { diff --git a/system/Validation/Rules.php b/system/Validation/Rules.php index 31aa042c5d36..c48465b327e0 100644 --- a/system/Validation/Rules.php +++ b/system/Validation/Rules.php @@ -28,8 +28,8 @@ class Rules /** * The value does not match another field in $data. * - * @param string|null $str - * @param array $data Other field/value pairs + * @param string|null $str + * @param array $data Other field/value pairs */ public function differs($str, string $field, array $data): bool { @@ -110,12 +110,14 @@ public function greater_than_equal_to($str, string $min): bool * Can ignore records by field/value to filter (currently * accept only one filter). * - * Example: + * ``` * is_not_unique[dbGroup.table.field,where_field,where_value] * is_not_unique[table.field,where_field,where_value] * is_not_unique[menu.id,active,1] + * ``` * - * @param string|null $str + * @param string|null $str + * @param array $data */ public function is_not_unique($str, string $field, array $data): bool { @@ -158,7 +160,8 @@ public function in_list($value, string $list): bool * is_unique[table.field,ignore_field,ignore_value] * is_unique[users.email,id,5] * - * @param string|null $str + * @param string|null $str + * @param array $data */ public function is_unique($str, string $field, array $data): bool { @@ -178,9 +181,9 @@ public function is_unique($str, string $field, array $data): bool /** * Prepares the database query for uniqueness checks. * - * @param mixed $value The value to check. - * @param string $field The field parameters. - * @param array $data Additional data. + * @param mixed $value The value to check. + * @param string $field The field parameters. + * @param array $data Additional data. * * @return array{0: BaseBuilder, 1: string|null, 2: string|null} */ @@ -247,8 +250,8 @@ public function less_than_equal_to($str, string $max): bool /** * Matches the value of another field in $data. * - * @param string|null $str - * @param array $data Other field/value pairs + * @param string|null $str + * @param array $data Other field/value pairs */ public function matches($str, string $field, array $data): bool { @@ -343,9 +346,9 @@ public function required($str = null): bool * * required_with[password] * - * @param string|null $str - * @param string|null $fields List of fields that we should check if present - * @param array $data Complete list of fields from the form + * @param string|null $str + * @param string|null $fields List of fields that we should check if present + * @param array $data Complete list of fields from the form */ public function required_with($str = null, ?string $fields = null, array $data = []): bool { @@ -387,9 +390,10 @@ public function required_with($str = null, ?string $fields = null, array $data = * * required_without[id,email] * - * @param string|null $str - * @param string|null $otherFields The param fields of required_without[]. - * @param string|null $field This rule param fields aren't present, this field is required. + * @param string|null $str + * @param string|null $otherFields The param fields of required_without[]. + * @param string|null $field This rule param fields aren't present, this field is required. + * @param array $data */ public function required_without( $str = null, @@ -454,10 +458,10 @@ public function required_without( /** * The field exists in $data. * - * @param mixed $value The field value. - * @param string|null $param The rule's parameter. - * @param array $data The data to be validated. - * @param string|null $field The field name. + * @param mixed $value The field value. + * @param string|null $param The rule's parameter. + * @param array $data The data to be validated. + * @param string|null $field The field name. */ public function field_exists( $value = null, diff --git a/system/Validation/StrictRules/Rules.php b/system/Validation/StrictRules/Rules.php index 6d8dce14588b..cca4fdf494be 100644 --- a/system/Validation/StrictRules/Rules.php +++ b/system/Validation/StrictRules/Rules.php @@ -33,8 +33,8 @@ public function __construct() /** * The value does not match another field in $data. * - * @param mixed $str - * @param array $data Other field/value pairs + * @param mixed $str + * @param array $data Other field/value pairs */ public function differs( $str, @@ -137,7 +137,8 @@ public function greater_than_equal_to($str, string $min): bool * is_not_unique[table.field,where_field,where_value] * is_not_unique[menu.id,active,1] * - * @param mixed $str + * @param mixed $str + * @param array $data */ public function is_not_unique($str, string $field, array $data): bool { @@ -176,7 +177,8 @@ public function in_list($value, string $list): bool * is_unique[table.field,ignore_field,ignore_value] * is_unique[users.email,id,5] * - * @param mixed $str + * @param mixed $str + * @param array $data */ public function is_unique($str, string $field, array $data): bool { @@ -226,8 +228,8 @@ public function less_than_equal_to($str, string $max): bool /** * Matches the value of another field in $data. * - * @param mixed $str - * @param array $data Other field/value pairs + * @param mixed $str + * @param array $data Other field/value pairs */ public function matches( $str, @@ -339,9 +341,9 @@ public function required($str = null): bool * * required_with[password] * - * @param mixed $str - * @param string|null $fields List of fields that we should check if present - * @param array $data Complete list of fields from the form + * @param mixed $str + * @param string|null $fields List of fields that we should check if present + * @param array $data Complete list of fields from the form */ public function required_with($str = null, ?string $fields = null, array $data = []): bool { @@ -356,9 +358,10 @@ public function required_with($str = null, ?string $fields = null, array $data = * * required_without[id,email] * - * @param mixed $str - * @param string|null $otherFields The param fields of required_without[]. - * @param string|null $field This rule param fields aren't present, this field is required. + * @param mixed $str + * @param string|null $otherFields The param fields of required_without[]. + * @param string|null $field This rule param fields aren't present, this field is required. + * @param array $data */ public function required_without( $str = null, @@ -373,10 +376,10 @@ public function required_without( /** * The field exists in $data. * - * @param mixed $value The field value. - * @param string|null $param The rule's parameter. - * @param array $data The data to be validated. - * @param string|null $field The field name. + * @param mixed $value The field value. + * @param string|null $param The rule's parameter. + * @param array $data The data to be validated. + * @param string|null $field The field name. */ public function field_exists( $value = null, diff --git a/system/Validation/Validation.php b/system/Validation/Validation.php index ceaa557ea404..b7c702aee6bc 100644 --- a/system/Validation/Validation.php +++ b/system/Validation/Validation.php @@ -14,7 +14,6 @@ namespace CodeIgniter\Validation; use Closure; -use CodeIgniter\Database\BaseConnection; use CodeIgniter\Exceptions\InvalidArgumentException; use CodeIgniter\Exceptions\LogicException; use CodeIgniter\HTTP\Exceptions\HTTPException; @@ -34,22 +33,20 @@ class Validation implements ValidationInterface /** * Files to load with validation functions. * - * @var array + * @var list */ protected $ruleSetFiles; /** * The loaded instances of our validation files. * - * @var array + * @var array */ protected $ruleSetInstances = []; /** * Stores the actual rules that should be run against $data. - * - * @var array}> - * + * ``` * [ * field1 => [ * 'label' => label, @@ -58,6 +55,9 @@ class Validation implements ValidationInterface * ], * ], * ] + * ``` + * + * @var array=, string|null=, string|null=): (bool|string))|string>}> */ protected $rules = []; @@ -65,14 +65,14 @@ class Validation implements ValidationInterface * The data that should be validated, * where 'key' is the alias, with value. * - * @var array + * @var array */ protected $data = []; /** * The data that was actually validated. * - * @var array + * @var array */ protected $validated = []; @@ -80,7 +80,7 @@ class Validation implements ValidationInterface * Any generated errors during validation. * 'key' is the alias, 'value' is the message. * - * @var array + * @var array */ protected $errors = []; @@ -88,7 +88,7 @@ class Validation implements ValidationInterface * Stores custom error message to use * during validation. Where 'key' is the alias. * - * @var array + * @var array> */ protected $customErrors = []; @@ -122,14 +122,6 @@ public function __construct($config, RendererInterface $view) $this->loadRuleSets(); } - /** - * Runs the validation process, returning true/false determining whether - * validation was successful or not. - * - * @param array|null $data The array of data to validate. - * @param string|null $group The predefined group of rules to apply. - * @param array|BaseConnection|non-empty-string|null $dbGroup The database group to use. - */ public function run(?array $data = null, ?string $group = null, $dbGroup = null): bool { if ($data === null) { @@ -165,10 +157,6 @@ public function run(?array $data = null, ?string $group = null, $dbGroup = null) $rules = $setup['rules']; - if (is_string($rules)) { - $rules = $this->splitRules($rules); - } - if (str_contains($field, '*')) { $flattenedArray = array_flatten_with_dots($data); @@ -238,15 +226,6 @@ private static function getRegex(string $field): string . '\z/'; } - /** - * Runs the validation process, returning true or false determining whether - * validation was successful or not. - * - * @param mixed $value The data to validate. - * @param array|string $rules The validation rules. - * @param list $errors The custom error message. - * @param string|null $dbGroup The database group to use. - */ public function check($value, $rules, array $errors = [], $dbGroup = null): bool { $this->reset(); @@ -263,9 +242,6 @@ public function check($value, $rules, array $errors = [], $dbGroup = null): bool ); } - /** - * Returns the actual validated data. - */ public function getValidated(): array { return $this->validated; @@ -277,10 +253,10 @@ public function getValidated(): array * the error to $this->errors and moves on to the next, * so that we can collect all of the first errors. * - * @param array|string $value - * @param array $rules - * @param array $data The array of data to validate, with `DBGroup`. - * @param string|null $originalField The original asterisk field name like "foo.*.bar". + * @param array|string $value + * @param list<(Closure(mixed, array=, string|null=, string|null=): (bool|string))|string> $rules + * @param array $data The array of data to validate, with `DBGroup`. + * @param string|null $originalField The original asterisk field name like "foo.*.bar". */ protected function processRules( string $field, @@ -386,9 +362,10 @@ protected function processRules( } /** - * @param array $data The array of data to validate, with `DBGroup`. + * @param list<(Closure(mixed, array=, string|null=, string|null=): (bool|string))|string> $rules + * @param array $data The array of data to validate, with `DBGroup`. * - * @return array|true The modified rules or true if we return early + * @return list<(Closure(mixed, array=, string|null=, string|null=): (bool|string))|string>|true The modified rules or true if we return early */ private function processIfExist(string $field, array $rules, array $data) { @@ -427,10 +404,11 @@ private function processIfExist(string $field, array $rules, array $data) } /** - * @param array|string $value - * @param array $data The array of data to validate, with `DBGroup`. + * @param array|string $value + * @param list<(Closure(mixed, array=, string|null=, string|null=): (bool|string))|string> $rules + * @param array $data The array of data to validate, with `DBGroup`. * - * @return array|true The modified rules or true if we return early + * @return list<(Closure(mixed, array=, string|null=, string|null=): (bool|string))|string>|true The modified rules or true if we return early */ private function processPermitEmpty($value, array $rules, array $data) { @@ -474,7 +452,7 @@ private function processPermitEmpty($value, array $rules, array $data) } /** - * @param Closure(bool|float|int|list|object|string|null, bool|float|int|list|object|string|null, string|null, string|null): (bool|string) $rule + * @param Closure(mixed, array=, string|null=, string|null=): (bool|string) $rule */ private function isClosure($rule): bool { @@ -483,6 +461,8 @@ private function isClosure($rule): bool /** * Is the array a string list `list`? + * + * @param array $array */ private function isStringList(array $array): bool { @@ -535,24 +515,6 @@ public function withRequest(RequestInterface $request): ValidationInterface return $this; } - /** - * Sets (or adds) an individual rule and custom error messages for a single - * field. - * - * The custom error message should be just the messages that apply to - * this field, like so: - * [ - * 'rule1' => 'message1', - * 'rule2' => 'message2', - * ] - * - * @param array|string $rules The validation rules. - * @param array $errors The custom error message. - * - * @return $this - * - * @throws InvalidArgumentException - */ public function setRule(string $field, ?string $label, $rules, array $errors = []) { if (! is_array($rules) && ! is_string($rules)) { @@ -575,24 +537,6 @@ public function setRule(string $field, ?string $label, $rules, array $errors = [ return $this; } - /** - * Stores the rules that should be used to validate the items. - * - * Rules should be an array formatted like: - * [ - * 'field' => 'rule1|rule2' - * ] - * - * The $errors array should be formatted like: - * [ - * 'field' => [ - * 'rule1' => 'message1', - * 'rule2' => 'message2', - * ], - * ] - * - * @param array $errors An array of custom error messages - */ public function setRules(array $rules, array $errors = []): ValidationInterface { $this->customErrors = $errors; @@ -625,9 +569,6 @@ public function setRules(array $rules, array $errors = []): ValidationInterface return $this; } - /** - * Returns all of the rules currently defined. - */ public function getRules(): array { return $this->rules; @@ -736,20 +677,6 @@ protected function loadRuleSets() } } - /** - * Loads custom rule groups (if set) into the current rules. - * - * Rules can be pre-defined in Config\Validation and can - * be any name, but must all still be an array of the - * same format used with setRules(). Additionally, check - * for {group}_errors for an array of custom error messages. - * - * @param non-empty-string|null $group - * - * @return array [rules, customErrors] - * - * @throws ValidationException - */ public function loadRuleGroup(?string $group = null) { if ($group === null || $group === '') { @@ -791,6 +718,11 @@ public function loadRuleGroup(?string $group = null) * The value of {id} would be replaced with the actual id in the form data: * * 'is_unique[users,email,id,13]' + * + * @param array=, string|null=, string|null=): (bool|string))|string>}> $rules + * @param array $data + * + * @return array=, string|null=, string|null=): (bool|string))|string>}> */ protected function fillPlaceholders(array $rules, array $data): array { @@ -850,6 +782,10 @@ protected function fillPlaceholders(array $rules, array $data): array /** * Retrieves valid placeholder fields. + * + * @param array $data + * + * @return list */ private function retrievePlaceholders(string $rule, array $data): array { @@ -957,6 +893,8 @@ protected function getErrorMessage( /** * Split rules string by pipe operator. + * + * @return list */ protected function splitRules(string $rules): array { diff --git a/system/Validation/ValidationInterface.php b/system/Validation/ValidationInterface.php index 836516d561b8..e90c41ffd341 100644 --- a/system/Validation/ValidationInterface.php +++ b/system/Validation/ValidationInterface.php @@ -25,9 +25,9 @@ interface ValidationInterface * Runs the validation process, returning true/false determining whether * validation was successful or not. * - * @param array|null $data The array of data to validate. - * @param string|null $group The predefined group of rules to apply. - * @param array|BaseConnection|non-empty-string|null $dbGroup The database group to use. + * @param array|null $data The array of data to validate. + * @param string|null $group The predefined group of rules to apply. + * @param array|BaseConnection|non-empty-string|null $dbGroup The database group to use. */ public function run(?array $data = null, ?string $group = null, $dbGroup = null): bool; @@ -35,10 +35,10 @@ public function run(?array $data = null, ?string $group = null, $dbGroup = null) * Check; runs the validation process, returning true or false * determining whether or not validation was successful. * - * @param mixed $value Value to validate. - * @param array|string $rules - * @param list $errors - * @param string|null $dbGroup The database group to use. + * @param mixed $value Value to validate. + * @param array|string $rules + * @param array $errors + * @param string|null $dbGroup The database group to use. * * @return bool True if valid, else false. */ @@ -55,13 +55,12 @@ public function withRequest(RequestInterface $request): ValidationInterface; * * The custom error message should be just the messages that apply to * this field, like so: + * ``` + * ['rule1' => 'message', 'rule2' => 'message'] + * ``` * - * [ - * 'rule' => 'message', - * 'rule' => 'message', - * ] - * - * @param array|string $rules + * @param array|string $rules + * @param array $errors * * @return $this */ @@ -69,11 +68,16 @@ public function setRule(string $field, ?string $label, $rules, array $errors = [ /** * Stores the rules that should be used to validate the items. + * + * @param array|string> $rules + * @param array> $messages */ public function setRules(array $rules, array $messages = []): ValidationInterface; /** * Returns all of the rules currently defined. + * + * @return array}> */ public function getRules(): array; @@ -139,7 +143,7 @@ public function reset(): ValidationInterface; * * @param non-empty-string|null $group * - * @return array + * @return list> */ public function loadRuleGroup(?string $group = null); @@ -160,6 +164,8 @@ public function showError(string $field, string $template = 'single'): string; /** * Returns the actual validated data. + * + * @return array */ public function getValidated(): array; } diff --git a/tests/system/Validation/FormatRulesTest.php b/tests/system/Validation/FormatRulesTest.php index d35855865e05..c2b6e0ca480c 100644 --- a/tests/system/Validation/FormatRulesTest.php +++ b/tests/system/Validation/FormatRulesTest.php @@ -160,6 +160,9 @@ public function testValidURLStrict(?string $url, bool $isLoose, bool $isStrict): $this->assertSame($isStrict, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideValidUrl(): iterable { yield from [ @@ -286,6 +289,9 @@ public function testValidEmail(?string $email, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideValidEmail(): iterable { yield from [ @@ -318,6 +324,9 @@ public function testValidEmails(?string $email, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideValidEmails(): iterable { yield from [ @@ -362,6 +371,9 @@ public function testValidIP(?string $ip, ?string $which, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideValidIP(): iterable { yield from [ @@ -430,6 +442,9 @@ public function testString($str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideString(): iterable { yield from [ @@ -462,6 +477,9 @@ public function testAlpha(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideAlpha(): iterable { yield from [ @@ -502,6 +520,9 @@ public function testAlphaSpace(?string $value, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideAlphaSpace(): iterable { yield from [ @@ -546,6 +567,9 @@ public function testAlphaNumeric(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function alphaNumericProvider(): iterable { yield from [ @@ -582,6 +606,9 @@ public function testAlphaNumericPunct(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideAlphaNumericPunct(): iterable { yield from [ @@ -710,6 +737,9 @@ public function testAlphaDash(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideAlphaDash(): iterable { yield from [ @@ -746,6 +776,9 @@ public function testHex(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideHex(): iterable { yield from [ @@ -782,6 +815,9 @@ public function testNumeric(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideNumeric(): iterable { yield from [ @@ -856,6 +892,9 @@ public function testNumericWithInvalidTypeData($value, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideInvalidIntegerType(): iterable { // TypeError : CodeIgniter\Validation\FormatRules::integer(): Argument #1 ($str) must be of type ?string, array given @@ -900,6 +939,9 @@ public function testInteger(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideInteger(): iterable { yield from [ @@ -952,6 +994,9 @@ public function testDecimal(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideDecimal(): iterable { yield from [ @@ -1008,6 +1053,9 @@ public function testNatural(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideNatural(): iterable { yield from [ @@ -1048,6 +1096,9 @@ public function testNaturalNoZero(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideNaturalNoZero(): iterable { yield from [ @@ -1088,6 +1139,9 @@ public function testBase64(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideBase64(): iterable { yield from [ @@ -1124,6 +1178,9 @@ public function testJson(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideJson(): iterable { yield from [ @@ -1180,6 +1237,9 @@ public function testTimeZone(?string $str, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideTimeZone(): iterable { yield from [ @@ -1216,6 +1276,9 @@ public function testValidDate(?string $str, ?string $format, bool $expected): vo $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideValidDate(): iterable { yield from [ diff --git a/tests/system/Validation/RulesTest.php b/tests/system/Validation/RulesTest.php index deddab05dc4d..27806ac0fdbc 100644 --- a/tests/system/Validation/RulesTest.php +++ b/tests/system/Validation/RulesTest.php @@ -59,6 +59,9 @@ protected function setUp(): void $this->validation->reset(); } + /** + * @param array $data + */ #[DataProvider('provideRequired')] public function testRequired(array $data, bool $expected): void { @@ -66,6 +69,9 @@ public function testRequired(array $data, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable, bool}> + */ public static function provideRequired(): iterable { yield from [ @@ -79,6 +85,10 @@ public static function provideRequired(): iterable ]; } + /** + * @param array|string> $rules + * @param array $data + */ #[DataProvider('provideIfExist')] public function testIfExist(array $rules, array $data, bool $expected): void { @@ -86,6 +96,9 @@ public function testIfExist(array $rules, array $data, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable|string>, array, bool}> + */ public static function provideIfExist(): iterable { yield from [ @@ -143,6 +156,10 @@ public function testIfExistArray(): void $this->validation->run($data); } + /** + * @param array|string> $rules + * @param array $data + */ #[DataProvider('providePermitEmpty')] public function testPermitEmpty(array $rules, array $data, bool $expected): void { @@ -150,6 +167,9 @@ public function testPermitEmpty(array $rules, array $data, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable|string>, array, bool}> + */ public static function providePermitEmpty(): iterable { yield from [ @@ -310,6 +330,9 @@ public static function providePermitEmpty(): iterable ]; } + /** + * @param array $data + */ #[DataProvider('provideMatches')] public function testMatches(array $data, bool $expected): void { @@ -317,6 +340,9 @@ public function testMatches(array $data, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable, bool}> + */ public static function provideMatches(): iterable { yield from [ @@ -332,6 +358,9 @@ public static function provideMatches(): iterable ]; } + /** + * @param array $data + */ #[DataProvider('provideMatchesNestedCases')] public function testMatchesNested(array $data, bool $expected): void { @@ -383,6 +412,9 @@ public function testMatchesWithDotArrayFail(): void ); } + /** + * @param array $data + */ #[DataProvider('provideDiffers')] public function testDiffers(array $data, bool $expected): void { @@ -390,6 +422,9 @@ public function testDiffers(array $data, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable, bool}> + */ public static function provideDiffers(): iterable { yield from [ @@ -405,6 +440,9 @@ public static function provideDiffers(): iterable ]; } + /** + * @param array $data + */ #[DataProvider('provideMatchesNestedCases')] public function testDiffersNested(array $data, bool $expected): void { @@ -412,6 +450,9 @@ public function testDiffersNested(array $data, bool $expected): void $this->assertSame(! $expected, $this->validation->run($data)); } + /** + * @return iterable, bool}> + */ public static function provideMatchesNestedCases(): iterable { yield from [ @@ -464,6 +505,9 @@ public function testDiffersWithDotArrayFail(): void ); } + /** + * @param array $data + */ #[DataProvider('provideEquals')] public function testEquals(array $data, string $param, bool $expected): void { @@ -471,6 +515,9 @@ public function testEquals(array $data, string $param, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable, string, bool}> + */ public static function provideEquals(): iterable { yield from [ @@ -489,6 +536,9 @@ public function testMinLength(?string $data, string $length, bool $expected): vo $this->assertSame($expected, $this->validation->run(['foo' => $data])); } + /** + * @return iterable + */ public static function provideMinLengthCases(): iterable { yield from [ @@ -522,6 +572,9 @@ public function testExactLength($data, bool $expected): void $this->assertSame($expected, $this->validation->run(['foo' => $data])); } + /** + * @return iterable + */ public static function provideExactLength(): iterable { yield from [ @@ -550,6 +603,9 @@ public function testGreaterThan(?string $first, ?string $second, bool $expected) $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideGreaterThan(): iterable { yield from [ @@ -573,6 +629,9 @@ public function testGreaterThanEqual(?string $first, ?string $second, bool $expe $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideGreaterThanEqual(): iterable { yield from [ @@ -597,6 +656,9 @@ public function testLessThan(?string $first, ?string $second, bool $expected): v $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideLessThan(): iterable { yield from [ @@ -621,6 +683,9 @@ public function testLessThanEqual(?string $first, ?string $second, bool $expecte $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideLessThanEqual(): iterable { yield from [ @@ -653,6 +718,9 @@ public function testNotInList(?string $first, ?string $second, bool $expected): $this->assertSame(! $expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideInList(): iterable { yield from [ @@ -687,6 +755,9 @@ public function testRequiredWith(string $field, ?string $check, bool $expected): $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideRequiredWith(): iterable { yield from [ @@ -719,8 +790,9 @@ public static function provideRequiredWith(): iterable ]; } + /** @see https://github.com/codeigniter4/CodeIgniter4/issues/7557 */ /** - * @see https://github.com/codeigniter4/CodeIgniter4/issues/7557 + * @param array $data */ #[DataProvider('provideRequiredWithAndOtherRules')] public function testRequiredWithAndOtherRules(bool $expected, array $data): void @@ -734,6 +806,9 @@ public function testRequiredWithAndOtherRules(bool $expected, array $data): void $this->assertSame($expected, $result); } + /** + * @return iterable}> + */ public static function provideRequiredWithAndOtherRules(): iterable { yield from [ @@ -756,6 +831,9 @@ public static function provideRequiredWithAndOtherRules(): iterable ]; } + /** + * @param array $data + */ #[DataProvider('provideRequiredWithAndOtherRuleWithValueZero')] public function testRequiredWithAndOtherRuleWithValueZero(bool $expected, array $data): void { @@ -769,6 +847,9 @@ public function testRequiredWithAndOtherRuleWithValueZero(bool $expected, array $this->assertSame($expected, $result); } + /** + * @return iterable}> + */ public static function provideRequiredWithAndOtherRuleWithValueZero(): iterable { yield from [ @@ -797,6 +878,9 @@ public function testRequiredWithout(string $field, ?string $check, bool $expecte $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideRequiredWithout(): iterable { yield from [ @@ -841,6 +925,9 @@ public function testRequiredWithoutMultiple(string $foo, string $bar, string $ba $this->assertSame($result, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideRequiredWithoutMultiple(): iterable { yield from [ @@ -877,6 +964,9 @@ public static function provideRequiredWithoutMultiple(): iterable ]; } + /** + * @param array $data + */ #[DataProvider('provideRequiredWithoutMultipleWithoutFields')] public function testRequiredWithoutMultipleWithoutFields(array $data, bool $result): void { @@ -885,6 +975,9 @@ public function testRequiredWithoutMultipleWithoutFields(array $data, bool $resu $this->assertSame($result, $this->validation->run($data)); } + /** + * @return iterable, bool}> + */ public static function provideRequiredWithoutMultipleWithoutFields(): iterable { yield from [ @@ -917,6 +1010,10 @@ public static function provideRequiredWithoutMultipleWithoutFields(): iterable ]; } + /** + * @param array|string> $rules + * @param array $data + */ #[DataProvider('provideFieldExists')] public function testFieldExists(array $rules, array $data, bool $expected): void { @@ -924,6 +1021,9 @@ public function testFieldExists(array $rules, array $data, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable|string>, array, bool}> + */ public static function provideFieldExists(): iterable { // Do not use `foo`, because there is a lang file `Foo`, and diff --git a/tests/system/Validation/StrictRules/CreditCardRulesTest.php b/tests/system/Validation/StrictRules/CreditCardRulesTest.php index 21691ebd6fae..deda7d76f984 100644 --- a/tests/system/Validation/StrictRules/CreditCardRulesTest.php +++ b/tests/system/Validation/StrictRules/CreditCardRulesTest.php @@ -69,6 +69,8 @@ public function testValidCCNumber(string $type, ?string $number, bool $expected) * Cards shown are test cards found around the web. * * @see https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm + * + * @return iterable */ public static function provideValidCCNumber(): iterable { diff --git a/tests/system/Validation/StrictRules/RulesTest.php b/tests/system/Validation/StrictRules/RulesTest.php index 0fc4f9e38c6e..9cb5744a285d 100644 --- a/tests/system/Validation/StrictRules/RulesTest.php +++ b/tests/system/Validation/StrictRules/RulesTest.php @@ -48,6 +48,10 @@ final class RulesTest extends TraditionalRulesTest ], ]; + /** + * @param array|string> $rules + * @param array $data + */ #[DataProvider('providePermitEmptyStrict')] public function testPermitEmptyStrict(array $rules, array $data, bool $expected): void { @@ -55,6 +59,9 @@ public function testPermitEmptyStrict(array $rules, array $data, bool $expected) $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable|string>, array, bool}> + */ public static function providePermitEmptyStrict(): iterable { yield from [ @@ -114,6 +121,9 @@ public function testGreaterThanEqualStrict($value, string $param, bool $expected $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideGreaterThanEqualStrict(): iterable { yield from [ @@ -139,6 +149,9 @@ public function testGreaterThanStrict($value, string $param, bool $expected): vo $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideGreaterThanStrict(): iterable { yield from [ @@ -165,6 +178,9 @@ public function testLessThanStrict($value, string $param, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideLessThanStrict(): iterable { yield from [ @@ -192,6 +208,9 @@ public function testLessEqualThanStrict($value, ?string $param, bool $expected): $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideLessEqualThanStrict(): iterable { yield from [ @@ -205,6 +224,9 @@ public static function provideLessEqualThanStrict(): iterable ]; } + /** + * @param array $data + */ #[DataProvider('provideMatches')] public function testMatches(array $data, bool $expected): void { @@ -212,6 +234,9 @@ public function testMatches(array $data, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable, bool}> + */ public static function provideMatches(): iterable { yield from [ @@ -227,6 +252,9 @@ public static function provideMatches(): iterable ]; } + /** + * @param array $data + */ #[DataProvider('provideDiffers')] public function testDiffers(array $data, bool $expected): void { @@ -234,6 +262,9 @@ public function testDiffers(array $data, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable, bool}> + */ public static function provideDiffers(): iterable { yield from [ diff --git a/tests/system/Validation/ValidationTest.php b/tests/system/Validation/ValidationTest.php index 3a0f57a0e8e6..6c7cb20de0e9 100644 --- a/tests/system/Validation/ValidationTest.php +++ b/tests/system/Validation/ValidationTest.php @@ -213,6 +213,9 @@ public function testSetRuleRulesFormat(bool $expected, $rules): void $this->addToAssertionCount(1); } + /** + * @return iterable + */ public static function provideSetRuleRulesFormat(): iterable { yield 'fail-simple-object' => [ @@ -403,6 +406,8 @@ public function testCallableRule(): void /** * Validation rule2 + * + * @param array $data */ public function rule2(mixed $value, array $data, ?string &$error, string $field): bool { @@ -473,6 +478,9 @@ public function testCanValidatetArrayData($value, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideCanValidatetArrayData(): iterable { yield 'list array' => [ @@ -524,6 +532,9 @@ public function testIsIntWithInvalidTypeData($value, bool $expected): void $this->assertSame($expected, $this->validation->run($data)); } + /** + * @return iterable + */ public static function provideIsIntWithInvalidTypeData(): iterable { yield 'array with int' => [ @@ -752,6 +763,11 @@ public function testRunWithCustomErrorsAndAsteriskField(): void * @param list|string $rules * @param string $expected */ + /** + * @param array|string> $errors + * @param mixed $rules + * @param mixed $expected + */ #[DataProvider('provideRulesSetup')] public function testRulesSetup($rules, $expected, array $errors = []): void { @@ -762,6 +778,9 @@ public function testRulesSetup($rules, $expected, array $errors = []): void $this->assertSame($expected, $this->validation->getError('foo')); } + /** + * @return iterable|string, string, array|string>}> + */ public static function provideRulesSetup(): iterable { yield from [ @@ -1054,9 +1073,9 @@ public function testShowBadTemplate(): void public function testNoRuleSetsSetup(): void { - try { - $rulesets = static::$config['ruleSets']; + $rulesets = static::$config['ruleSets']; + try { static::$config['ruleSets'] = null; (new Validation((object) static::$config, service('renderer'))) ->reset() @@ -1188,6 +1207,11 @@ public function testRulesForObjectField(): void ], $this->validation->getErrors()); } + /** + * @param array $body + * @param array|string> $rules + * @param array $results + */ #[DataProvider('provideRulesForArrayField')] public function testRulesForArrayField(array $body, array $rules, array $results): void { @@ -1201,6 +1225,9 @@ public function testRulesForArrayField(array $body, array $rules, array $results $this->assertSame($results, $this->validation->getErrors()); } + /** + * @return iterable, rules: array|string>, results: array}> + */ public static function provideRulesForArrayField(): iterable { yield from [ @@ -1450,8 +1477,10 @@ public function testTranslatedLabelTagReplacement(): void $this->assertSame($expected, $errors['Username']); } + /** @see https://github.com/codeigniter4/CodeIgniter4/issues/4521 */ /** - * @see https://github.com/codeigniter4/CodeIgniter4/issues/4521 + * @param array|string> $rules + * @param array $data */ #[DataProvider('provideIfExistRuleWithAsterisk')] public function testIfExistRuleWithAsterisk(bool $expected, array $rules, array $data): void @@ -1460,6 +1489,9 @@ public function testIfExistRuleWithAsterisk(bool $expected, array $rules, array $this->assertSame($expected, $actual); } + /** + * @return iterable|string>, array}> + */ public static function provideIfExistRuleWithAsterisk(): iterable { yield 'dot-on-end-fail' => [ @@ -1519,8 +1551,10 @@ public static function provideIfExistRuleWithAsterisk(): iterable ]; } + /** @see https://github.com/codeigniter4/CodeIgniter4/issues/4510 */ /** - * @see https://github.com/codeigniter4/CodeIgniter4/issues/4510 + * @param array|string> $rules + * @param array $data */ #[DataProvider('provideValidationOfArrayData')] public function testValidationOfArrayData(bool $expected, array $rules, array $data): void @@ -1529,6 +1563,9 @@ public function testValidationOfArrayData(bool $expected, array $rules, array $d $this->assertSame($expected, $actual); } + /** + * @return iterable|string>, array}> + */ public static function provideValidationOfArrayData(): iterable { yield 'fail-empty-string' => [ @@ -1574,8 +1611,9 @@ public static function provideValidationOfArrayData(): iterable ]; } + /** @see https://github.com/codeigniter4/CodeIgniter4/issues/4929 */ /** - * @see https://github.com/codeigniter4/CodeIgniter4/issues/4929 + * @param array $expected */ #[DataProvider('provideSplittingOfComplexStringRules')] public function testSplittingOfComplexStringRules(string $input, array $expected): void @@ -1584,6 +1622,9 @@ public function testSplittingOfComplexStringRules(string $input, array $expected $this->assertSame($expected, $splitter($input)); } + /** + * @return iterable}> + */ public static function provideSplittingOfComplexStringRules(): iterable { yield [ @@ -1636,7 +1677,7 @@ public static function provideSplittingOfComplexStringRules(): iterable * internal method to simplify placeholder replacement test * REQUIRES THE RULES TO BE SET FOR THE FIELD "foo" * - * @param array|null $data optional POST data, needs to contain the key $placeholderField to pass + * @param array|null $data Optional POST data, needs to contain the key $placeholderField to pass * * @source https://github.com/codeigniter4/CodeIgniter4/pull/3910#issuecomment-784922913 */ diff --git a/utils/phpstan-baseline/argument.type.neon b/utils/phpstan-baseline/argument.type.neon index 80cb40694994..6619cabe64fc 100644 --- a/utils/phpstan-baseline/argument.type.neon +++ b/utils/phpstan-baseline/argument.type.neon @@ -1,4 +1,4 @@ -# total 64 errors +# total 63 errors parameters: ignoreErrors: @@ -172,11 +172,6 @@ parameters: count: 1 path: ../../tests/system/Test/TestResponseTest.php - - - message: '#^Parameter \#3 \$errors of method CodeIgniter\\Validation\\Validation\:\:check\(\) expects list\, array\{is_numeric\: ''Nope\. Not a number\.''\} given\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - message: '#^Parameter \#2 \$context of method CodeIgniter\\View\\Parser\:\:setData\(\) expects ''attr''\|''css''\|''html''\|''js''\|''raw''\|''url''\|null, ''unknown'' given\.$#' count: 3 diff --git a/utils/phpstan-baseline/loader.neon b/utils/phpstan-baseline/loader.neon index 57a1c5ee9257..5201cc0ce757 100644 --- a/utils/phpstan-baseline/loader.neon +++ b/utils/phpstan-baseline/loader.neon @@ -1,4 +1,4 @@ -# total 1381 errors +# total 1226 errors includes: - argument.type.neon diff --git a/utils/phpstan-baseline/missingType.iterableValue.neon b/utils/phpstan-baseline/missingType.iterableValue.neon index 518e931c13d8..bc77f2121b41 100644 --- a/utils/phpstan-baseline/missingType.iterableValue.neon +++ b/utils/phpstan-baseline/missingType.iterableValue.neon @@ -1,4 +1,4 @@ -# total 1129 errors +# total 975 errors parameters: ignoreErrors: @@ -3732,326 +3732,6 @@ parameters: count: 1 path: ../../system/Typography/Typography.php - - - message: '#^Property CodeIgniter\\Validation\\CreditCardRules\:\:\$cards type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/CreditCardRules.php - - - - message: '#^Method CodeIgniter\\Validation\\DotArrayFilter\:\:filter\(\) has parameter \$array with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/DotArrayFilter.php - - - - message: '#^Method CodeIgniter\\Validation\\DotArrayFilter\:\:filter\(\) has parameter \$indexes with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/DotArrayFilter.php - - - - message: '#^Method CodeIgniter\\Validation\\DotArrayFilter\:\:filter\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/DotArrayFilter.php - - - - message: '#^Method CodeIgniter\\Validation\\DotArrayFilter\:\:run\(\) has parameter \$array with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/DotArrayFilter.php - - - - message: '#^Method CodeIgniter\\Validation\\DotArrayFilter\:\:run\(\) has parameter \$indexes with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/DotArrayFilter.php - - - - message: '#^Method CodeIgniter\\Validation\\DotArrayFilter\:\:run\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/DotArrayFilter.php - - - - message: '#^Method CodeIgniter\\Validation\\Rules\:\:differs\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\Rules\:\:field_exists\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\Rules\:\:is_not_unique\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\Rules\:\:is_unique\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\Rules\:\:matches\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\Rules\:\:required_with\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\Rules\:\:required_without\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\Rules\:\:differs\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/StrictRules/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\Rules\:\:field_exists\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/StrictRules/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\Rules\:\:is_not_unique\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/StrictRules/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\Rules\:\:is_unique\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/StrictRules/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\Rules\:\:matches\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/StrictRules/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\Rules\:\:required_with\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/StrictRules/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\Rules\:\:required_without\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/StrictRules/Rules.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:check\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:fillPlaceholders\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:fillPlaceholders\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:fillPlaceholders\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:getRules\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:getValidated\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:isStringList\(\) has parameter \$array with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:loadRuleGroup\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:processIfExist\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:processIfExist\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:processIfExist\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:processPermitEmpty\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:processPermitEmpty\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:processPermitEmpty\(\) has parameter \$value with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:processPermitEmpty\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:processRules\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:processRules\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:processRules\(\) has parameter \$value with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:retrievePlaceholders\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:retrievePlaceholders\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:run\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:run\(\) has parameter \$dbGroup with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:setRule\(\) has parameter \$errors with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:setRule\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:setRules\(\) has parameter \$errors with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:setRules\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\Validation\:\:splitRules\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Property CodeIgniter\\Validation\\Validation\:\:\$customErrors type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Property CodeIgniter\\Validation\\Validation\:\:\$data type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Property CodeIgniter\\Validation\\Validation\:\:\$errors type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Property CodeIgniter\\Validation\\Validation\:\:\$ruleSetFiles type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Property CodeIgniter\\Validation\\Validation\:\:\$ruleSetInstances type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Property CodeIgniter\\Validation\\Validation\:\:\$validated type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/Validation.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationInterface\:\:check\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/ValidationInterface.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationInterface\:\:getRules\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/ValidationInterface.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationInterface\:\:getValidated\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/ValidationInterface.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationInterface\:\:loadRuleGroup\(\) return type has no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/ValidationInterface.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationInterface\:\:run\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/ValidationInterface.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationInterface\:\:run\(\) has parameter \$dbGroup with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/ValidationInterface.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationInterface\:\:setRule\(\) has parameter \$errors with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/ValidationInterface.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationInterface\:\:setRule\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/ValidationInterface.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationInterface\:\:setRules\(\) has parameter \$messages with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/ValidationInterface.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationInterface\:\:setRules\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../system/Validation/ValidationInterface.php - - message: '#^Method CodeIgniter\\View\\Cell\:\:determineClass\(\) return type has no value type specified in iterable type array\.$#' count: 1 @@ -5127,456 +4807,6 @@ parameters: count: 1 path: ../../tests/system/Throttle/ThrottleTest.php - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:alphaNumericProvider\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideAlphaDash\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideAlphaNumericPunct\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideAlphaSpace\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideAlpha\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideBase64\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideDecimal\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideHex\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideInteger\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideInvalidIntegerType\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideJson\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideNaturalNoZero\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideNatural\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideNumeric\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideString\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideTimeZone\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideValidDate\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideValidEmail\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideValidEmails\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideValidIP\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\FormatRulesTest\:\:provideValidUrl\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideDiffers\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideEquals\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideExactLength\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideFieldExists\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideGreaterThanEqual\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideGreaterThan\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideIfExist\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideInList\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideLessThanEqual\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideLessThan\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideMatchesNestedCases\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideMatches\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideMinLengthCases\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:providePermitEmpty\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideRequiredWithAndOtherRuleWithValueZero\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideRequiredWithAndOtherRules\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideRequiredWith\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideRequiredWithoutMultipleWithoutFields\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideRequiredWithoutMultiple\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideRequiredWithout\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:provideRequired\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testDiffersNested\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testDiffers\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testEquals\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testFieldExists\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testFieldExists\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testIfExist\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testIfExist\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testMatchesNested\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testMatches\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testPermitEmpty\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testPermitEmpty\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testRequiredWithAndOtherRuleWithValueZero\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testRequiredWithAndOtherRules\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testRequiredWithoutMultipleWithoutFields\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\RulesTest\:\:testRequired\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\CreditCardRulesTest\:\:provideValidCCNumber\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/CreditCardRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\FormatRulesTest\:\:provideAlphaSpace\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\FormatRulesTest\:\:provideInvalidIntegerType\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/FormatRulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:provideDiffers\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:provideGreaterThanEqualStrict\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:provideGreaterThanStrict\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:provideLessEqualThanStrict\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:provideLessThanStrict\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:provideMatches\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:providePermitEmptyStrict\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:testDiffers\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:testMatches\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:testPermitEmptyStrict\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\StrictRules\\RulesTest\:\:testPermitEmptyStrict\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/StrictRules/RulesTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:placeholderReplacementResultDetermination\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:provideCanValidatetArrayData\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:provideIfExistRuleWithAsterisk\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:provideIsIntWithInvalidTypeData\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:provideRulesForArrayField\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:provideRulesSetup\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:provideSetRuleRulesFormat\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:provideSplittingOfComplexStringRules\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:provideValidationOfArrayData\(\) return type has no value type specified in iterable type iterable\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:rule2\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:testIfExistRuleWithAsterisk\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:testIfExistRuleWithAsterisk\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:testRulesForArrayField\(\) has parameter \$body with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:testRulesForArrayField\(\) has parameter \$results with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:testRulesForArrayField\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:testRulesSetup\(\) has parameter \$errors with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:testSplittingOfComplexStringRules\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:testValidationOfArrayData\(\) has parameter \$data with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - - - message: '#^Method CodeIgniter\\Validation\\ValidationTest\:\:testValidationOfArrayData\(\) has parameter \$rules with no value type specified in iterable type array\.$#' - count: 1 - path: ../../tests/system/Validation/ValidationTest.php - - message: '#^Method CodeIgniter\\View\\DBResultDummy\:\:getFieldNames\(\) return type has no value type specified in iterable type array\.$#' count: 1