diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7f1d694..722fe4e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,8 +12,7 @@ jobs: strategy: fail-fast: true matrix: - php: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0] - stability: [prefer-stable] + php: [7.4, 8.0, 8.1, 8.2, 8.3, 8.4] name: PHP ${{ matrix.php }} @@ -21,24 +20,16 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - - name: Cache dependencies - uses: actions/cache@v1 - with: - path: ~/.composer/cache/files - key: dependencies-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }} - - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: bcmath, json, mbstring, intl + tools: composer:v2 coverage: none - - name: Update composer - run: composer self-update - - name: Install dependencies - run: composer update --${{ matrix.stability }} --prefer-dist --no-interaction --no-progress + run: composer update --no-interaction --no-progress - name: Execute tests run: vendor/bin/phpunit --verbose \ No newline at end of file diff --git a/composer.json b/composer.json index 9962efe..3b088f1 100644 --- a/composer.json +++ b/composer.json @@ -20,10 +20,10 @@ } ], "require": { - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { - "opis/string": "^1.4", + "opis/string": "^2.0", "ext-bcmath": "*", "ext-json": "*", "ext-mbstring": "*", diff --git a/src/Formats/AbstractFormat.php b/src/Formats/AbstractFormat.php index 4950f5b..f455ae0 100644 --- a/src/Formats/AbstractFormat.php +++ b/src/Formats/AbstractFormat.php @@ -38,7 +38,7 @@ protected function validateRegex($data, string $regex): bool * @param null $options * @return bool */ - protected function validateFilter($data, int $filter, $options = null): bool + protected function validateFilter($data, int $filter, $options = 0): bool { return filter_var($data, $filter, $options) !== false; } diff --git a/src/ISchema.php b/src/ISchema.php index 0bd8ea0..4c0948a 100644 --- a/src/ISchema.php +++ b/src/ISchema.php @@ -36,6 +36,6 @@ public function draft(): string; * @param string|null $id * @return mixed */ - public function resolve(string $id = null); + public function resolve(?string $id = null); } \ No newline at end of file diff --git a/src/IValidator.php b/src/IValidator.php index e8b7c26..91d43fa 100644 --- a/src/IValidator.php +++ b/src/IValidator.php @@ -28,7 +28,7 @@ interface IValidator * @param ISchemaLoader|null $loader * @return ValidationResult */ - public function schemaValidation($data, ISchema $schema, int $max_errors = 1, ISchemaLoader $loader = null): ValidationResult; + public function schemaValidation($data, ISchema $schema, int $max_errors = 1, ?ISchemaLoader $loader = null): ValidationResult; /** * @param $data @@ -37,7 +37,7 @@ public function schemaValidation($data, ISchema $schema, int $max_errors = 1, IS * @param ISchemaLoader|null $loader * @return ValidationResult */ - public function uriValidation($data, string $schema_uri, int $max_errors = 1, ISchemaLoader $loader = null): ValidationResult; + public function uriValidation($data, string $schema_uri, int $max_errors = 1, ?ISchemaLoader $loader = null): ValidationResult; /** * @param $data @@ -46,13 +46,13 @@ public function uriValidation($data, string $schema_uri, int $max_errors = 1, IS * @param ISchemaLoader|null $loader * @return ValidationResult */ - public function dataValidation($data, $schema, int $max_errors = 1, ISchemaLoader $loader = null): ValidationResult; + public function dataValidation($data, $schema, int $max_errors = 1, ?ISchemaLoader $loader = null): ValidationResult; /** * @param IFilterContainer|null $filters * @return IValidator */ - public function setFilters(IFilterContainer $filters = null): self; + public function setFilters(?IFilterContainer $filters = null): self; /** * @return IFilterContainer|null @@ -63,7 +63,7 @@ public function getFilters(); * @param IFormatContainer|null $formats * @return IValidator */ - public function setFormats(IFormatContainer $formats = null): self; + public function setFormats(?IFormatContainer $formats = null): self; /** * @return IFilterContainer|null @@ -85,7 +85,7 @@ public function getHelper(): IValidatorHelper; * @param ISchemaLoader|null $loader * @return IValidator */ - public function setLoader(ISchemaLoader $loader = null): self; + public function setLoader(?ISchemaLoader $loader = null): self; /** * @return ISchemaLoader|null @@ -96,7 +96,7 @@ public function getLoader(); * @param IMediaTypeContainer|null $media * @return IValidator */ - public function setMediaType(IMediaTypeContainer $media = null): self; + public function setMediaType(?IMediaTypeContainer $media = null): self; /** * @return IMediaTypeContainer|null diff --git a/src/IValidatorHelper.php b/src/IValidatorHelper.php index f951eda..57ab9e4 100644 --- a/src/IValidatorHelper.php +++ b/src/IValidatorHelper.php @@ -61,6 +61,6 @@ public function isMultipleOf($number, $divisor): bool; * @param array $defaults * @return bool */ - public function equals($a, $b, array $defaults = null): bool; + public function equals($a, $b, ?array $defaults = null): bool; } \ No newline at end of file diff --git a/src/Loaders/Memory.php b/src/Loaders/Memory.php index 8564147..5396cdf 100644 --- a/src/Loaders/Memory.php +++ b/src/Loaders/Memory.php @@ -59,7 +59,7 @@ public function unregister(ISchema $schema): self * @param string|null $id * @return Memory */ - public function add($data, string $id = null): self + public function add($data, ?string $id = null): self { if (is_string($data)) { $data = json_decode($data, false); diff --git a/src/Schema.php b/src/Schema.php index 027fc3d..f70cd08 100644 --- a/src/Schema.php +++ b/src/Schema.php @@ -53,7 +53,7 @@ class Schema implements ISchema * @param \stdClass|boolean $data * @param string|null $id */ - public function __construct($data, string $id = null) + public function __construct($data, ?string $id = null) { if (is_object($data)) { if (property_exists($data, static::ID_PROP)) { @@ -117,7 +117,7 @@ public function draft(): string /** * @inheritDoc */ - public function resolve(string $id = null) + public function resolve(?string $id = null) { if ($id === null) { $id = $this->id; @@ -196,7 +196,7 @@ public static function walk(array &$container, &$schema, string $id, array $path * @param string|null $id * @return Schema */ - public static function fromJsonString(string $json, string $id = null): self + public static function fromJsonString(string $json, ?string $id = null): self { return new self(json_decode($json, false), $id); } diff --git a/src/Validator.php b/src/Validator.php index 6fa2675..1c35f66 100644 --- a/src/Validator.php +++ b/src/Validator.php @@ -65,11 +65,11 @@ class Validator implements IValidator * @param IFilterContainer|null $filters * @param IMediaTypeContainer|null $media */ - public function __construct(IValidatorHelper $helper = null, - ISchemaLoader $loader = null, - IFormatContainer $formats = null, - IFilterContainer $filters = null, - IMediaTypeContainer $media = null) + public function __construct(?IValidatorHelper $helper = null, + ?ISchemaLoader $loader = null, + ?IFormatContainer $formats = null, + ?IFilterContainer $filters = null, + ?IMediaTypeContainer $media = null) { $this->helper = $helper ?? new ValidatorHelper(); $this->formats = $formats ?? new FormatContainer(); @@ -81,7 +81,7 @@ public function __construct(IValidatorHelper $helper = null, /** * @inheritDoc */ - public function schemaValidation($data, ISchema $schema, int $max_errors = 1, ISchemaLoader $loader = null): ValidationResult + public function schemaValidation($data, ISchema $schema, int $max_errors = 1, ?ISchemaLoader $loader = null): ValidationResult { $bag = new ValidationResult($max_errors); @@ -103,7 +103,7 @@ public function schemaValidation($data, ISchema $schema, int $max_errors = 1, IS /** * @inheritDoc */ - public function uriValidation($data, string $schema_uri, int $max_errors = 1, ISchemaLoader $loader = null): ValidationResult + public function uriValidation($data, string $schema_uri, int $max_errors = 1, ?ISchemaLoader $loader = null): ValidationResult { $schema = new stdClass(); $schema->{'$ref'} = URI::normalize($schema_uri); @@ -113,7 +113,7 @@ public function uriValidation($data, string $schema_uri, int $max_errors = 1, IS /** * @inheritDoc */ - public function dataValidation($data, $schema, int $max_errors = 1, ISchemaLoader $loader = null): ValidationResult + public function dataValidation($data, $schema, int $max_errors = 1, ?ISchemaLoader $loader = null): ValidationResult { $schema = is_string($schema) ? Schema::fromJsonString($schema) : new Schema($schema); return $this->schemaValidation($data, $schema, $max_errors, $loader); @@ -122,7 +122,7 @@ public function dataValidation($data, $schema, int $max_errors = 1, ISchemaLoade /** * @inheritDoc */ - public function setFilters(IFilterContainer $filters = null): IValidator + public function setFilters(?IFilterContainer $filters = null): IValidator { $this->filters = $filters; return $this; @@ -139,7 +139,7 @@ public function getFilters() /** * @inheritDoc */ - public function setFormats(IFormatContainer $formats = null): IValidator + public function setFormats(?IFormatContainer $formats = null): IValidator { $this->formats = $formats; return $this; @@ -173,7 +173,7 @@ public function getHelper(): IValidatorHelper /** * @inheritDoc */ - public function setLoader(ISchemaLoader $loader = null): IValidator + public function setLoader(?ISchemaLoader $loader = null): IValidator { $this->loader = $loader; return $this; @@ -190,7 +190,7 @@ public function getLoader() /** * @inheritDoc */ - public function setMediaType(IMediaTypeContainer $media = null): IValidator + public function setMediaType(?IMediaTypeContainer $media = null): IValidator { $this->mediaTypes = $media; return $this; @@ -544,7 +544,7 @@ protected function validateKeywords(&$document_data, &$data, array $data_pointer * @return bool */ protected function validateCommons(/** @noinspection PhpUnusedParameterInspection */ - &$document_data, &$data, array $data_pointer, array $parent_data_pointer, ISchema $document, $schema, ValidationResult $bag, array &$defaults = null): bool + &$document_data, &$data, array $data_pointer, array $parent_data_pointer, ISchema $document, $schema, ValidationResult $bag, ?array &$defaults = null): bool { $ok = true; @@ -929,7 +929,7 @@ protected function validateConditionals(&$document_data, &$data, array $data_poi * @param array|null $defaults * @return bool */ - protected function validateProperties(&$document_data, &$data, array $data_pointer, array $parent_data_pointer, ISchema $document, $schema, ValidationResult $bag, array $defaults = null): bool + protected function validateProperties(&$document_data, &$data, array $data_pointer, array $parent_data_pointer, ISchema $document, $schema, ValidationResult $bag, ?array $defaults = null): bool { $type = $this->helper->type($data, true); if ($type === 'null' || $type === 'boolean') { @@ -1694,7 +1694,7 @@ protected function validateArray(&$document_data, &$data, array $data_pointer, a * @param array|null $defaults * @return bool */ - protected function validateObject(&$document_data, &$data, array $data_pointer, array $parent_data_pointer, ISchema $document, $schema, ValidationResult $bag, array &$defaults = null): bool + protected function validateObject(&$document_data, &$data, array $data_pointer, array $parent_data_pointer, ISchema $document, $schema, ValidationResult $bag, ?array &$defaults = null): bool { $ok = true; @@ -2014,7 +2014,7 @@ protected function validateObject(&$document_data, &$data, array $data_pointer, * @param $data * @param $defaults */ - protected function setObjectDefaults($data, array &$defaults = null) + protected function setObjectDefaults($data, ?array &$defaults = null) { if (is_object($data) && $defaults) { foreach ($defaults as $property => $value) { diff --git a/src/ValidatorHelper.php b/src/ValidatorHelper.php index 6c85d4b..459d799 100644 --- a/src/ValidatorHelper.php +++ b/src/ValidatorHelper.php @@ -139,7 +139,7 @@ public function isMultipleOf($number, $divisor): bool /** * @inheritDoc */ - public function equals($a, $b, array $defaults = null): bool + public function equals($a, $b, ?array $defaults = null): bool { $a_type = $this->type($a, false); $b_type = $this->type($b, false); diff --git a/tests/JsonValidatorTrait.php b/tests/JsonValidatorTrait.php index c521748..890dc84 100644 --- a/tests/JsonValidatorTrait.php +++ b/tests/JsonValidatorTrait.php @@ -36,7 +36,7 @@ protected function getValidator(): IValidator return $this->validator; } - protected function createValidator(ISchemaLoader $loader = null, bool $use_default = true): IValidator + protected function createValidator(?ISchemaLoader $loader = null, bool $use_default = true): IValidator { if ($loader === null) { $loader = new File( 'schema:', [__DIR__ . '/schemas']);