diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 6a1bdf3..513d14d 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -20,7 +20,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: '7.2' + php-version: '7.4' coverage: none tools: composer:v2 diff --git a/composer.json b/composer.json index a234679..7dd17fa 100644 --- a/composer.json +++ b/composer.json @@ -39,7 +39,7 @@ }, "config": { "platform": { - "php": "7.2" + "php": "7.4" } }, "repositories": [ diff --git a/phpstan.neon b/phpstan.neon index 5264ea6..1712066 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -3,7 +3,7 @@ includes: parameters: # Level 5 is a good balance between strictness and practicality - level: 5 + level: 6 # Paths to analyze paths: @@ -20,7 +20,7 @@ parameters: # Add specific error patterns to ignore here if needed # PHP version (must be an integer) - phpVersion: 70200 + phpVersion: 70400 # Treat missing return types as mixed treatPhpDocTypesAsCertain: false diff --git a/src/Config.php b/src/Config.php index 73cd527..2147e66 100644 --- a/src/Config.php +++ b/src/Config.php @@ -48,7 +48,7 @@ class Config * * @param ContainerInterface $container */ - public static function setServiceContainer($container) + public static function setServiceContainer($container): void { self::$container = $container; } @@ -74,7 +74,7 @@ public static function getHookPrefix(): string /** * @since 1.0.0 */ - public static function setHookPrefix(string $prefix) + public static function setHookPrefix(string $prefix): void { self::$hookPrefix = $prefix; } @@ -105,7 +105,7 @@ public static function getValidationExceptionClass(): string * * @param class-string $validationExceptionClass */ - public static function setValidationExceptionClass(string $validationExceptionClass) + public static function setValidationExceptionClass(string $validationExceptionClass): void { if (!is_a($validationExceptionClass, ValidationExceptionInterface::class, true)) { throw new RuntimeException( @@ -142,7 +142,7 @@ public static function getInvalidArgumentExceptionClass(): string * * @param class-string $invalidArgumentExceptionClass */ - public static function setInvalidArgumentExceptionClass(string $invalidArgumentExceptionClass) + public static function setInvalidArgumentExceptionClass(string $invalidArgumentExceptionClass): void { if (!is_a($invalidArgumentExceptionClass, InvalidArgumentException::class, true)) { throw new RuntimeException( diff --git a/src/Contracts/ValidatesOnFrontEnd.php b/src/Contracts/ValidatesOnFrontEnd.php index 428c97c..8795519 100644 --- a/src/Contracts/ValidatesOnFrontEnd.php +++ b/src/Contracts/ValidatesOnFrontEnd.php @@ -11,7 +11,7 @@ interface ValidatesOnFrontEnd * * @since 1.0.0 * - * @return int|float|string|bool|array|null + * @return mixed */ public function serializeOption(); } diff --git a/src/Contracts/ValidationRule.php b/src/Contracts/ValidationRule.php index 0861542..e13107d 100644 --- a/src/Contracts/ValidationRule.php +++ b/src/Contracts/ValidationRule.php @@ -34,6 +34,11 @@ public static function fromString(?string $options = null): ValidationRule; * @since 1.2.0 add ExcludeValue return option * @since 1.0.0 * + * @param mixed $value + * @param Closure $fail + * @param string $key + * @param array $values + * * @return void|ExcludeValue|SkipValidationRules */ public function __invoke($value, Closure $fail, string $key, array $values); diff --git a/src/Rules/Abstracts/ConditionalRule.php b/src/Rules/Abstracts/ConditionalRule.php index a9fa3d8..f95cd59 100644 --- a/src/Rules/Abstracts/ConditionalRule.php +++ b/src/Rules/Abstracts/ConditionalRule.php @@ -5,9 +5,9 @@ namespace StellarWP\Validation\Rules\Abstracts; use StellarWP\FieldConditions\ComplexConditionSet; +use StellarWP\FieldConditions\SimpleConditionSet; use StellarWP\FieldConditions\Contracts\Condition; use StellarWP\FieldConditions\Contracts\ConditionSet; -use StellarWP\FieldConditions\SimpleConditionSet; use StellarWP\Validation\Config; use StellarWP\Validation\Contracts\ValidatesOnFrontEnd; use StellarWP\Validation\Contracts\ValidationRule; @@ -15,12 +15,12 @@ abstract class ConditionalRule implements ValidationRule, ValidatesOnFrontEnd { /** - * @var ConditionSet + * @var SimpleConditionSet|ComplexConditionSet */ - protected $conditions; + protected ConditionSet $conditions; /** - * @param ConditionSet|Condition[] $conditions + * @param SimpleConditionSet|ComplexConditionSet|Condition[] $conditions */ public function __construct($conditions) { diff --git a/src/Rules/In.php b/src/Rules/In.php index 768de92..a84ef7f 100644 --- a/src/Rules/In.php +++ b/src/Rules/In.php @@ -10,9 +10,9 @@ class In implements ValidationRule, ValidatesOnFrontEnd { /** - * @var array + * @var array */ - protected $acceptedValues; + protected array $acceptedValues; /** * @since 1.2.0 @@ -24,6 +24,8 @@ public static function id(): string /** * @since 1.2.0 + * + * @param mixed ...$acceptedValues */ final public function __construct(...$acceptedValues) { @@ -64,6 +66,8 @@ public function __invoke($value, Closure $fail, string $key, array $values) /** * @since 1.2.0 + * + * @return array */ public function serializeOption(): array { diff --git a/src/ServiceProvider.php b/src/ServiceProvider.php index 9a0a043..93a86e6 100644 --- a/src/ServiceProvider.php +++ b/src/ServiceProvider.php @@ -28,7 +28,10 @@ class ServiceProvider { - private $validationRules = [ + /** + * @var array + */ + private array $validationRules = [ Required::class, Min::class, Max::class, @@ -55,7 +58,7 @@ class ServiceProvider /** * Registers the validation rules registrar with the container */ - public function register() + public function register(): void { Config::getServiceContainer()->singleton(ValidationRulesRegistrar::class, function () { $register = new ValidationRulesRegistrar(); diff --git a/src/ValidationRuleSet.php b/src/ValidationRuleSet.php index e06b158..ff09f27 100644 --- a/src/ValidationRuleSet.php +++ b/src/ValidationRuleSet.php @@ -15,17 +15,17 @@ use StellarWP\Validation\Contracts\ValidationRule; use Traversable; +/** + * @implements IteratorAggregate + */ class ValidationRuleSet implements IteratorAggregate, JsonSerializable { - /** - * @var ValidationRulesRegistrar - */ - private $register; + private ValidationRulesRegistrar $register; /** * @var array */ - private $rules = []; + private array $rules = []; /** * @since 1.0.0 @@ -168,6 +168,8 @@ public function removeRuleWithId(string $id): self * Returns the validation rules. * * @since 1.0.0 + * + * @return array */ public function getRules(): array { diff --git a/src/ValidationRulesRegistrar.php b/src/ValidationRulesRegistrar.php index 92109d9..5cceda1 100644 --- a/src/ValidationRulesRegistrar.php +++ b/src/ValidationRulesRegistrar.php @@ -11,8 +11,10 @@ */ class ValidationRulesRegistrar { - /** @var array */ - protected $rules = []; + /** + * @var array> + */ + protected array $rules = []; /** * Register one or many validation rules. diff --git a/src/Validator.php b/src/Validator.php index 8c22e9f..fc727f6 100644 --- a/src/Validator.php +++ b/src/Validator.php @@ -7,6 +7,8 @@ use StellarWP\Validation\Commands\ExcludeValue; use StellarWP\Validation\Commands\SkipValidationRules; use StellarWP\Validation\Contracts\Sanitizer; +use StellarWP\Validation\Contracts\ValidationRule; +use Closure; /** * A tool for taking in a set of values and corresponding validation rules, and then validating the values. @@ -18,38 +20,39 @@ class Validator /** * @var array */ - private $ruleSets; + private array $ruleSets; /** * @var array */ - private $values; + private array $values; /** * @var array */ - private $labels; + private array $labels; /** * @var array */ - private $errors = []; + private array $errors = []; /** * @var array */ - private $validatedValues = []; + private array $validatedValues = []; /** * @var bool */ - private $ranValidationRules = false; + private bool $ranValidationRules = false; /** * @since 1.0.0 * - * @param array $ruleSets + * @param array> $ruleSets * @param array $values + * @param array $labels */ public function __construct(array $ruleSets, array $values, array $labels = []) { @@ -98,10 +101,8 @@ public function passes(): bool * Will run only once, and then store the results for subsequent calls. * * @since 1.0.0 - * - * @return void */ - private function runValidationRules() + private function runValidationRules(): void { if ($this->ranValidationRules) { return; @@ -156,6 +157,8 @@ public function errors(): array * Returns the validated values, with any sanitization rules applied. * * @since 1.0.0 + * + * @return array */ public function validated(): array {