Skip to content

Commit

Permalink
feat: new rule: integer
Browse files Browse the repository at this point in the history
  • Loading branch information
SandroMiguel committed Jul 14, 2022
1 parent a061506 commit 437ca1e
Show file tree
Hide file tree
Showing 8 changed files with 331 additions and 28 deletions.
29 changes: 29 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,7 @@ if ($myCustomValidationFail) {
1. [image_max_width](#image_max_width)
1. [image_min_height](#image_min_height)
1. [image_min_width](#image_min_width)
1. [integer](#integer)
1. [ip](#ip)
1. [ipv4](#ipv4)
1. [ipv6](#ipv6)
Expand Down Expand Up @@ -868,6 +869,34 @@ $rules = [
| 400px | :x: | :x: |
| 600px | :heavy_check_mark: | :heavy_check_mark: |

### integer

Checks whether the value is integer.

```
$rules = [
'distance' => [
'label' => 'Distance',
'rules' => [
RuleEnum::INTEGER,
],
],
];
```

| Value | numeric | numeric + required |
| -------- | :----------------: | :----------------: |
| `null` | :heavy_check_mark: | :x: |
| `''` | :heavy_check_mark: | :x: |
| `'0'` | :x: | :x: |
| `0` | :heavy_check_mark: | :heavy_check_mark: |
| `false` | :x: | :x: |
| `[]` | :x: | :x: |
| `-1` | :heavy_check_mark: | :heavy_check_mark: |
| `1` | :heavy_check_mark: | :heavy_check_mark: |
| `true` | :x: | :x: |
| `'text'` | :x: | :x: |

### ip

Checks whether the value is a valid IP address.
Expand Down
1 change: 1 addition & 0 deletions src/Enum/RuleEnum.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ abstract class RuleEnum
public const IMAGE_MAX_WIDTH = 'image_max_width';
public const IMAGE_MIN_HEIGHT = 'image_min_height';
public const IMAGE_MIN_WIDTH = 'image_min_width';
public const INTEGER = 'integer';
public const IP = 'ip';
public const IPV4 = 'ipv4';
public const IPV6 = 'ipv6';
Expand Down
4 changes: 4 additions & 0 deletions src/I18n/en.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@
'withLabel' => 'The uploaded image width of the "{param:3}" field is {param:1}px. The minimum width is {param:2}px.',
'withoutLabel' => 'The uploaded image width of this field is {param:1}px. The minimum width is {param:2}px.',
],
RuleEnum::INTEGER => [
'withLabel' => 'The "{param:1}" field must be integer.',
'withoutLabel' => 'This field must be integer.',
],
RuleEnum::IP => [
'withLabel' => 'The "{param:1}" field must be a valid IP address.',
'withoutLabel' => 'This field must be a valid IP address.',
Expand Down
70 changes: 42 additions & 28 deletions src/I18n/nl-nl.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,116 +16,130 @@

declare(strict_types=1);

use Verum\Enum\RuleEnum;

return [
'alpha' => [
RuleEnum::ALPHA => [
'withLabel' => 'Het veld "{param:1}" moet letters (a-z) bevatten.',
'withoutLabel' => 'Dit veld moet letters (a-z) bevatten.',
],
'alpha_numeric' => [
RuleEnum::ALPHA_NUMERIC => [
'withLabel' => 'Het veld "{param:1}" moet letters (a-z) en/of cijfers (0-9) bevatten.',
'withoutLabel' => 'Dit veld moet letters (a-z) en/of cijfers (0-9) bevatten.',
],
'between' => [
RuleEnum::BETWEEN => [
'withLabel' => 'De waarde van het veld "{param:3}" moet tussen {param:1} en {param:2} liggen.',
'withoutLabel' => 'De waarde van dit veld moet tussen {param:1} en {param:2} liggen.',
],
'between_length' => [
RuleEnum::BETWEEN_LENGTH => [
'withLabel' => 'De waarde van het veld "{param:3}" moet tussen {param:1} en {param:2} tekens liggen.',
'withoutLabel' => 'De waarde van dit veld moet tussen {param:1} en {param:2} tekens liggen.',
],
'boolean_value' => [
RuleEnum::BOOLEAN_VALUE => [
'withLabel' => 'Het veld "{param:1}" moet een boolean bevatten.',
'withoutLabel' => 'Dit veld moet een boolean bevatten.',
],
'contains' => [
RuleEnum::CONTAINS => [
'withLabel' => 'Het veld "{param:3}" moet de waarde "{param:1}" bevatten. Geldige waardes zijn: {param:2}',
'withoutLabel' => 'Dit veld moet de waarde "{param:1}" bevatten. Geldige waardes zijn: {param:2}',
],
'date' => [
RuleEnum::DATE => [
'withLabel' => 'Het veld "{param:2}" moet een geldige datum in dit formaat bevatten: "{param:1}"',
'withoutLabel' => 'Dit veld moet een geldige datum in dit formaat bevatten: "{param:1}"',
],
'email' => [
RuleEnum::EMAIL => [
'withLabel' => 'Het veld "{param:1}" moet een geldig e-mail adres bevatten.',
'withoutLabel' => 'Dit veld moet een geldig e-mail adres bevatten.',
],
'equals' => [
RuleEnum::EQUALS => [
'withLabel' => 'De velden {param:1} en {param:2} moeten hetzelfde zijn.',
'withoutLabel' => 'De velden moeten hetzelfde zijn.',
],
'file_max_size' => [
RuleEnum::FILE_MAX_SIZE => [
'withLabel' => 'Het veld "{param:3}" bevat een bestandsgrootte van {param:1}. De waarde moet minder zijn dan {param:2}.',
'withoutLabel' => 'Dit veld bevat een bestandsgrootte van {param:1}. De waarde moet minder zijn dan {param:2}.',
],
'file_mime_type' => [
RuleEnum::FILE_MIME_TYPE => [
'withLabel' => 'Het veld "{param:3}" bevat een bestand van het type {param:1}. Het type moet {param:2} zijn.',
'withoutLabel' => 'Dit veld bevat een bestand van het type {param:1}. Het type moet {param:2} zijn.',
],
'float_number' => [
RuleEnum::FLOAT_NUMBER => [
'withLabel' => 'Het veld "{param:1}" moet een getal met een punt als komma bevatten.',
'withoutLabel' => 'Dit veld moet een getal met een punt als komma bevatten.',
],
'image_max_height' => [
RuleEnum::IMAGE_MAX_HEIGHT => [
'withLabel' => 'De hoogte van de geüploade afbeelding in het veld "{param:3}" is {param:1}px. De maximale hoogte is {param:2} px.',
'withoutLabel' => 'De hoogte van de geüploade afbeelding is {param:1}px. De maximale hoogte is {param:2} px.',
],
'image_max_width' => [
RuleEnum::IMAGE_MAX_WIDTH => [
'withLabel' => 'De hoogte van de geüploade afbeelding in het veld "{param:3}" is {param:1}px. De maximale breedte is {param:2} px.',
'withoutLabel' => 'De hoogte van de geüploade afbeelding is {param:1}px. De maximale breedte is {param:2} px.',
],
'image_min_height' => [
RuleEnum::IMAGE_MIN_HEIGHT => [
'withLabel' => 'De hoogte van de geüploade afbeelding in het veld "{param:3}" is {param:1}px. De minimale hoogte is {param:2} px.',
'withoutLabel' => 'De hoogte van de geüploade afbeelding is {param:1}px. De minimale hoogte is {param:2} px.',
],
'image_min_width' => [
RuleEnum::IMAGE_MIN_WIDTH => [
'withLabel' => 'De breedte van de geüploade afbeelding in het veld "{param:3}" is {param:1}px. De minimale breedte is {param:2} px.',
'withoutLabel' => 'De breedte van de geüploade afbeelding is {param:1}px. De minimale breedte is {param:2} px.',
],
'ip' => [
RuleEnum::INTEGER => [
'withLabel' => 'Het veld "{param:1}" moet een geheel getal zijn.',
'withoutLabel' => 'Dit veld moet een geheel getal zijn.',
],
RuleEnum::IP => [
'withLabel' => 'Het veld "{param:1}" moet een geldig IP-adres bevatten.',
'withoutLabel' => 'Dit veld moet een geldig IP-adres bevatten.',
],
'ipv4' => [
RuleEnum::IPV4 => [
'withLabel' => 'Het veld "{param:1}" moet een geldig IPv4-adres bevatten.',
'withoutLabel' => 'Dit veld moet een geldig IPv4-adres bevatten.',
],
'ipv6' => [
RuleEnum::IPV6 => [
'withLabel' => 'Het veld "{param:1}" moet een geldig IPv6-adres bevatten.',
'withoutLabel' => 'Dit veld moet een geldig IPv6-adres bevatten.',
],
'max' => [
RuleEnum::MAX => [
'withLabel' => 'Het veld "{param:2}" mag niet hoger dan {param:1} zijn.',
'withoutLabel' => 'Dit veld mag niet hoger dan {param:1} zijn.',
],
'max_length' => [
RuleEnum::MAX_LENGTH => [
'withLabel' => 'Het veld "{param:2}" mag niet groter zijn dan {param:1} tekens.',
'withoutLabel' => 'Dit veld mag niet groter zijn dan {param:1} tekens.',
],
'min' => [
RuleEnum::MIN => [
'withLabel' => 'Het veld "{param:2}" moet minstens {param:1} zijn.',
'withoutLabel' => 'De waarde van dit veld moet minstens {param:1} zijn.',
],
'min_length' => [
RuleEnum::MIN_LENGTH => [
'withLabel' => 'Het veld "{param:2}" moet minimaal {param:1} tekens lang zijn.',
'withoutLabel' => 'Dit veld moet minimaal {param:1} tekens lang zijn.',
],
'numeric' => [
RuleEnum::NUMERIC => [
'withLabel' => 'Het veld "{param:1}" moet een numerieke waarde hebben.',
'withoutLabel' => 'Het veld moet een numerieke waarde hebben.',
],
'regex' => [
RuleEnum::REGEX => [
'withLabel' => 'Het veld "{param:2}" voldoet niet aan het juiste patroon {param:1}.',
'withoutLabel' => 'Dit veld voldoet niet aan het juiste patroon {param:1}.',
],
'required' => [
RuleEnum::REQUIRED => [
'withLabel' => 'Het veld "{param:1}" is verplicht.',
'withoutLabel' => 'Dit veld is verplicht.',
],
RuleEnum::REQUIRED_IF => [
'withLabel' => 'Het veld "{param:1}" is verplicht.',
'withoutLabel' => 'Dit veld is verplicht.',
],
RuleEnum::REQUIRED_IF_NOT => [
'withLabel' => 'Het veld "{param:1}" is verplicht.',
'withoutLabel' => 'Dit veld is verplicht.',
],
'slug' => [
RuleEnum::SLUG => [
'withLabel' => 'Het veld "{param:1}" moet een geldige slug bevatten (bijv. hallo-wereld_123).',
'withoutLabel' => 'Dit veld moet een geldige slug bevatten (bijv. hallo-wereld_123).',
],
'url' => [
RuleEnum::URL => [
'withLabel' => 'Het veld "{param:1}" moet een geldige URL bevatten.',
'withoutLabel' => 'Dit veld moet een geldige URL bevatten.',
],
Expand Down
4 changes: 4 additions & 0 deletions src/I18n/pt-br.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@
'withLabel' => 'A largura da imagem enviada no campo "{param:3}" é de {param:1}px. A largura mínima é de {param:2}px.',
'withoutLabel' => 'A largura da imagem enviada neste campo é de {param:1}px. A largura mínima é de {param:2}px.',
],
RuleEnum::INTEGER => [
'withLabel' => 'O campo "{param:1}" deve ser um número inteiro.',
'withoutLabel' => 'Este campo deve ser um número inteiro.',
],
RuleEnum::IP => [
'withLabel' => 'O campo "{param:1}" deve ser um endereço IP válido.',
'withoutLabel' => 'Este campo deve ser um endereço IP válido.',
Expand Down
4 changes: 4 additions & 0 deletions src/I18n/pt-pt.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@
'withLabel' => 'A largura da imagem enviada no campo "{param:3}" é de {param:1}px. A largura mínima é de {param:2}px.',
'withoutLabel' => 'A largura da imagem enviada neste campo é de {param:1}px. A largura mínima é de {param:2}px.',
],
RuleEnum::INTEGER => [
'withLabel' => 'O campo "{param:1}" deve ser um número inteiro.',
'withoutLabel' => 'Este campo deve ser um número inteiro.',
],
RuleEnum::IP => [
'withLabel' => 'O campo "{param:1}" deve ser um endereço IP válido.',
'withoutLabel' => 'Este campo deve ser um endereço IP válido.',
Expand Down
69 changes: 69 additions & 0 deletions src/Rules/Integer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<?php

/**
* Integer rule.
*
* PHP Version 7.2.11-3
*
* @package Verum-PHP
* @license MIT https://github.com/SandroMiguel/verum-php/blob/master/LICENSE
* @author Sandro Miguel Marques <[email protected]>
* @copyright 2022 Sandro
* @since Verum-PHP 2.1.0
* @version 1.0.0 (2022/07/13)
* @link https://github.com/SandroMiguel/verum-php
*/

declare(strict_types=1);

namespace Verum\Rules;

/**
* Class Integer | src/Rules/Integer.php
* Checks whether the value is integer.
*/
final class Integer extends Rule
{
/**
* Integer constructor.
*
* @param mixed $fieldValue Field Value to validate.
*
* @version 1.0.0 (2022/07/13)
* @since Verum 2.1.0
*/
public function __construct(mixed $fieldValue)
{
$this->fieldValue = $fieldValue;
}

/**
* Validates the field value against the rule.
*
* @return bool Returns TRUE if it passes the validation, FALSE otherwise.
*
* @version 1.0.0 (2022/07/13)
* @since Verum 2.1.0
*/
public function validate(): bool
{
if ($this->fieldValue === null || $this->fieldValue === '') {
return true;
}

return is_int($this->fieldValue);
}

/**
* Error Message Parameters.
*
* @return array<int, string> Returns the parameters for the error message.
*
* @version 1.0.0 (2022/07/13)
* @since Verum 2.1.0
*/
public function getErrorMessageParameters(): array
{
return [$this->fieldLabel];
}
}
Loading

0 comments on commit 437ca1e

Please sign in to comment.