mirror of
https://github.com/Respect/Validation.git
synced 2024-05-04 07:23:14 +02:00
Update version of "respect/coding-standard"
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
This commit is contained in:
parent
966c510559
commit
72dd88144e
42
.php_cs
42
.php_cs
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
|
||||
return PhpCsFixer\Config::create()
|
||||
->setRiskyAllowed(true)
|
||||
->setRules([
|
||||
'@Symfony' => true,
|
||||
'@PHP71Migration:risky' => true,
|
||||
'phpdoc_align' => false,
|
||||
'phpdoc_summary' => false,
|
||||
'mb_str_functions' => true,
|
||||
'no_multiline_whitespace_before_semicolons' => true,
|
||||
'no_useless_else' => true,
|
||||
'no_useless_return' => true,
|
||||
'ordered_imports' => true,
|
||||
'phpdoc_order' => true,
|
||||
'array_syntax' => ['syntax' => 'short'],
|
||||
'no_short_echo_tag' => true,
|
||||
'php_unit_construct' => true,
|
||||
'php_unit_dedicate_assert' => true,
|
||||
'php_unit_expectation' => true,
|
||||
'php_unit_mock' => true,
|
||||
'php_unit_namespaced' => true,
|
||||
'php_unit_ordered_covers' => true,
|
||||
'php_unit_set_up_tear_down_visibility' => true,
|
||||
'php_unit_test_annotation' => [
|
||||
'style' => 'annotation',
|
||||
],
|
||||
'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
|
||||
'php_unit_test_class_requires_covers' => true,
|
||||
])
|
||||
->setCacheFile(
|
||||
sprintf(
|
||||
'%s/.php_cs.cache',
|
||||
getenv('TRAVIS') ? getenv('HOME').'/.php-cs-fixer' : __DIR__
|
||||
)
|
||||
)
|
||||
->setFinder(
|
||||
PhpCsFixer\Finder::create()
|
||||
->in(['library', 'tests'])
|
||||
->name('*.php')
|
||||
->name('*.phpt')
|
||||
);
|
|
@ -27,7 +27,7 @@
|
|||
"phpstan/phpstan-deprecation-rules": "^0.12",
|
||||
"phpstan/phpstan-phpunit": "^0.12",
|
||||
"phpunit/phpunit": "^9.3",
|
||||
"respect/coding-standard": "^2.1",
|
||||
"respect/coding-standard": "^3.0",
|
||||
"squizlabs/php_codesniffer": "^3.5",
|
||||
"symfony/validator": "^3.0||^4.0",
|
||||
"zendframework/zend-validator": "^2.1"
|
||||
|
|
|
@ -136,11 +136,6 @@ class ValidationException extends InvalidArgumentException implements Exception
|
|||
return isset($this->defaultTemplates[$this->mode][$this->template]) === false;
|
||||
}
|
||||
|
||||
public function __toString(): string
|
||||
{
|
||||
return $this->getMessage();
|
||||
}
|
||||
|
||||
protected function chooseTemplate(): string
|
||||
{
|
||||
return (string) key($this->defaultTemplates[$this->mode]);
|
||||
|
@ -154,4 +149,9 @@ class ValidationException extends InvalidArgumentException implements Exception
|
|||
$this->params
|
||||
);
|
||||
}
|
||||
|
||||
public function __toString(): string
|
||||
{
|
||||
return $this->getMessage();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,13 +36,6 @@ use function ucfirst;
|
|||
*/
|
||||
final class Factory
|
||||
{
|
||||
/**
|
||||
* Default instance of the Factory.
|
||||
*
|
||||
* @var Factory
|
||||
*/
|
||||
private static $defaultInstance;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
*/
|
||||
|
@ -63,11 +56,30 @@ final class Factory
|
|||
*/
|
||||
private $parameterStringifier;
|
||||
|
||||
/**
|
||||
* Default instance of the Factory.
|
||||
*
|
||||
* @var Factory
|
||||
*/
|
||||
private static $defaultInstance;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->parameterStringifier = new KeepOriginalStringName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default instance of the Factory.
|
||||
*/
|
||||
public static function getDefaultInstance(): self
|
||||
{
|
||||
if (self::$defaultInstance === null) {
|
||||
self::$defaultInstance = new self();
|
||||
}
|
||||
|
||||
return self::$defaultInstance;
|
||||
}
|
||||
|
||||
public function withRuleNamespace(string $rulesNamespace): self
|
||||
{
|
||||
$clone = clone $this;
|
||||
|
@ -100,26 +112,6 @@ final class Factory
|
|||
return $clone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the default instance of the Factory.
|
||||
*/
|
||||
public static function setDefaultInstance(self $defaultInstance): void
|
||||
{
|
||||
self::$defaultInstance = $defaultInstance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default instance of the Factory.
|
||||
*/
|
||||
public static function getDefaultInstance(): self
|
||||
{
|
||||
if (self::$defaultInstance === null) {
|
||||
self::$defaultInstance = new self();
|
||||
}
|
||||
|
||||
return self::$defaultInstance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a rule.
|
||||
*
|
||||
|
@ -185,6 +177,14 @@ final class Factory
|
|||
return new ValidationException($input, $id, $params, $formatter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the default instance of the Factory.
|
||||
*/
|
||||
public static function setDefaultInstance(self $defaultInstance): void
|
||||
{
|
||||
self::$defaultInstance = $defaultInstance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a reflection based on class name.
|
||||
*
|
||||
|
|
|
@ -45,6 +45,13 @@ abstract class AbstractAge extends AbstractRule
|
|||
*/
|
||||
private $baseDate;
|
||||
|
||||
/**
|
||||
* Should compare the current base date with the given one.
|
||||
*
|
||||
* The dates are represented as integers in the format "Ymd".
|
||||
*/
|
||||
abstract protected function compare(int $baseDate, int $givenDate): bool;
|
||||
|
||||
/**
|
||||
* Initializes the rule.
|
||||
*/
|
||||
|
@ -71,13 +78,6 @@ abstract class AbstractAge extends AbstractRule
|
|||
return $this->isValidWithFormat($this->format, (string) $input);
|
||||
}
|
||||
|
||||
/**
|
||||
* Should compare the current base date with the given one.
|
||||
*
|
||||
* The dates are represented as integers in the format "Ymd".
|
||||
*/
|
||||
abstract protected function compare(int $baseDate, int $givenDate): bool;
|
||||
|
||||
private function isValidWithoutFormat(string $dateTime): bool
|
||||
{
|
||||
$timestamp = strtotime($dateTime);
|
||||
|
|
|
@ -29,6 +29,14 @@ abstract class AbstractComparison extends AbstractRule
|
|||
*/
|
||||
private $compareTo;
|
||||
|
||||
/**
|
||||
* Compare both values and return whether the comparison is valid or not.
|
||||
*
|
||||
* @param mixed $left
|
||||
* @param mixed $right
|
||||
*/
|
||||
abstract protected function compare($left, $right): bool;
|
||||
|
||||
/**
|
||||
* Initializes the rule by setting the value to be compared to the input.
|
||||
*
|
||||
|
@ -53,12 +61,4 @@ abstract class AbstractComparison extends AbstractRule
|
|||
|
||||
return $this->compare($left, $right);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare both values and return whether the comparison is valid or not.
|
||||
*
|
||||
* @param mixed $left
|
||||
* @param mixed $right
|
||||
*/
|
||||
abstract protected function compare($left, $right): bool;
|
||||
}
|
||||
|
|
|
@ -29,6 +29,8 @@ abstract class AbstractFilterRule extends AbstractRule
|
|||
*/
|
||||
private $additionalChars;
|
||||
|
||||
abstract protected function validateFilteredInput(string $input): bool;
|
||||
|
||||
/**
|
||||
* Initializes the rule with a list of characters to be ignored by the validation.
|
||||
*/
|
||||
|
@ -56,8 +58,6 @@ abstract class AbstractFilterRule extends AbstractRule
|
|||
return $filteredInput === '' || $this->validateFilteredInput($filteredInput);
|
||||
}
|
||||
|
||||
abstract protected function validateFilteredInput(string $input): bool;
|
||||
|
||||
private function filter(string $input): string
|
||||
{
|
||||
return str_replace(str_split($this->additionalChars), '', $input);
|
||||
|
|
|
@ -35,14 +35,6 @@ abstract class AbstractRule implements Validatable
|
|||
*/
|
||||
protected $template;
|
||||
|
||||
/**
|
||||
* @param mixed$input
|
||||
*/
|
||||
public function __invoke($input): bool
|
||||
{
|
||||
return $this->validate($input);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
|
@ -98,4 +90,12 @@ abstract class AbstractRule implements Validatable
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed$input
|
||||
*/
|
||||
public function __invoke($input): bool
|
||||
{
|
||||
return $this->validate($input);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,11 @@ abstract class AbstractSearcher extends AbstractRule
|
|||
{
|
||||
use CanValidateUndefined;
|
||||
|
||||
/**
|
||||
* @return mixed[]
|
||||
*/
|
||||
abstract protected function getDataSource(): array;
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
|
@ -38,9 +43,4 @@ abstract class AbstractSearcher extends AbstractRule
|
|||
|
||||
return in_array($input, $dataSource, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed[]
|
||||
*/
|
||||
abstract protected function getDataSource(): array;
|
||||
}
|
||||
|
|
|
@ -110,11 +110,10 @@ final class KeyNested extends AbstractRelated
|
|||
/**
|
||||
* @phpcsSuppress SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingParameterTypeHint
|
||||
*
|
||||
* @param object $object
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
private function getValueFromObject($object, string $property)
|
||||
private function getValueFromObject(object $object, string $property)
|
||||
{
|
||||
if (empty($property) || !property_exists($object, $property)) {
|
||||
$message = sprintf('Cannot select the property %s from the given object', $this->getReference());
|
||||
|
|
|
@ -48,7 +48,7 @@ final class Luhn extends AbstractRule
|
|||
$parity = $numDigits % 2;
|
||||
for ($i = 0; $i < $numDigits; ++$i) {
|
||||
$digit = $digits[$i];
|
||||
if ($parity == ($i % 2)) {
|
||||
if ($parity == $i % 2) {
|
||||
$digit <<= 1;
|
||||
if (9 < $digit) {
|
||||
$digit = $digit - 9;
|
||||
|
@ -57,6 +57,6 @@ final class Luhn extends AbstractRule
|
|||
$sum += $digit;
|
||||
}
|
||||
|
||||
return ($sum % 10) == 0;
|
||||
return $sum % 10 == 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ final class NfeAccessKey extends AbstractRule
|
|||
$digits = array_map('intval', str_split($input));
|
||||
$w = [];
|
||||
for ($i = 0, $z = 5, $m = 43; $i <= $m; ++$i) {
|
||||
$z = $i < $m ? ($z - 1) == 1 ? 9 : ($z - 1) : 0;
|
||||
$z = $i < $m ? $z - 1 == 1 ? 9 : $z - 1 : 0;
|
||||
$w[] = $z;
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ final class NfeAccessKey extends AbstractRule
|
|||
}
|
||||
|
||||
$s -= 11 * floor($s / 11);
|
||||
$v = $s == 0 || $s == 1 ? 0 : (11 - $s);
|
||||
$v = $s == 0 || $s == 1 ? 0 : 11 - $s;
|
||||
|
||||
return $v == $digits[43];
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ final class Nif extends AbstractRule
|
|||
|
||||
private function validateDni(int $number, string $control): bool
|
||||
{
|
||||
return mb_substr('TRWAGMYFPDXBNJZSQVHLCKE', ($number % 23), 1) === $control;
|
||||
return mb_substr('TRWAGMYFPDXBNJZSQVHLCKE', $number % 23, 1) === $control;
|
||||
}
|
||||
|
||||
private function validateNie(string $prefix, string $number, string $control): bool
|
||||
|
@ -92,12 +92,12 @@ final class Nif extends AbstractRule
|
|||
|
||||
$digits = str_split((string) $code);
|
||||
$lastDigit = (int) array_pop($digits);
|
||||
$key = $lastDigit === 0 ? 0 : (10 - $lastDigit);
|
||||
$key = $lastDigit === 0 ? 0 : 10 - $lastDigit;
|
||||
|
||||
if (is_numeric($control)) {
|
||||
return (int) $key === (int) $control;
|
||||
}
|
||||
|
||||
return mb_substr('JABCDEFGHI', ($key % 10), 1) === $control;
|
||||
return mb_substr('JABCDEFGHI', $key % 10, 1) === $control;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ final class PrimeNumber extends AbstractRule
|
|||
}
|
||||
|
||||
for ($i = 3; $i <= ceil(sqrt((float) $input)); $i += 2) {
|
||||
if (($input % $i) == 0) {
|
||||
if ($input % $i == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,19 +31,19 @@ use function sprintf;
|
|||
*/
|
||||
final class VideoUrl extends AbstractRule
|
||||
{
|
||||
private const SERVICES = [
|
||||
// phpcs:disable Generic.Files.LineLength.TooLong
|
||||
'youtube' => '@^https?://(www\.)?(?:youtube\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^\"&?/]{11})@i',
|
||||
'vimeo' => '@^https?://(www\.)?(player\.)?(vimeo\.com/)((channels/[A-z]+/)|(groups/[A-z]+/videos/)|(video/))?([0-9]+)@i',
|
||||
'twitch' => '@^https?://(((www\.)?twitch\.tv/videos/[0-9]+)|clips\.twitch\.tv/[a-zA-Z]+)$@i',
|
||||
// phpcs:enable Generic.Files.LineLength.TooLong
|
||||
];
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
private $service;
|
||||
|
||||
// phpcs:disable Generic.Files.LineLength.TooLong
|
||||
private const SERVICES = [
|
||||
'youtube' => '@^https?://(www\.)?(?:youtube\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^\"&?/]{11})@i',
|
||||
'vimeo' => '@^https?://(www\.)?(player\.)?(vimeo\.com/)((channels/[A-z]+/)|(groups/[A-z]+/videos/)|(video/))?([0-9]+)@i',
|
||||
'twitch' => '@^https?://(((www\.)?twitch\.tv/videos/[0-9]+)|clips\.twitch\.tv/[a-zA-Z]+)$@i',
|
||||
];
|
||||
// phpcs:enable Generic.Files.LineLength.TooLong
|
||||
|
||||
/**
|
||||
* Create a new instance VideoUrl.
|
||||
*
|
||||
|
|
|
@ -181,6 +181,14 @@ use function count;
|
|||
*/
|
||||
final class Validator extends AllOf
|
||||
{
|
||||
/**
|
||||
* Create instance validator.
|
||||
*/
|
||||
public static function create(): self
|
||||
{
|
||||
return new self();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
|
@ -222,12 +230,4 @@ final class Validator extends AllOf
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create instance validator.
|
||||
*/
|
||||
public static function create(): self
|
||||
{
|
||||
return new self();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,17 +1,10 @@
|
|||
--CREDITS--
|
||||
Paul Karikari <paulkarikari1@gmail.com>
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
if (!extension_loaded('uopz')) {
|
||||
echo 'skip: Extension "uopz" is required to test "Uploaded" rule';
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use Respect\Validation\Exceptions\NestedValidationException;
|
||||
|
@ -46,6 +39,12 @@ try {
|
|||
echo $exception->getFullMessage() . PHP_EOL;
|
||||
}
|
||||
?>
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('uopz')) {
|
||||
echo 'skip: Extension "uopz" is required to test "Uploaded" rule';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
"filename" must be an uploaded file
|
||||
"filename" must not be an uploaded file
|
||||
|
|
|
@ -41,26 +41,6 @@ final class CallTest extends TestCase
|
|||
*/
|
||||
private $errorException;
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->errorException = new ErrorException('This is a PHP error');
|
||||
|
||||
set_error_handler(function (): void {
|
||||
throw $this->errorException;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function tearDown(): void
|
||||
{
|
||||
restore_error_handler();
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
|
@ -312,4 +292,24 @@ final class CallTest extends TestCase
|
|||
|
||||
trigger_error('Forcing PHP to trigger an error');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->errorException = new ErrorException('This is a PHP error');
|
||||
|
||||
set_error_handler(function (): void {
|
||||
throw $this->errorException;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function tearDown(): void
|
||||
{
|
||||
restore_error_handler();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,22 +35,6 @@ final class NoTest extends RuleTestCase
|
|||
*/
|
||||
private $locale;
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->locale = (string) setlocale(LC_ALL, '0');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function tearDown(): void
|
||||
{
|
||||
setlocale(LC_ALL, $this->locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
|
@ -139,4 +123,20 @@ final class NoTest extends RuleTestCase
|
|||
|
||||
self::assertInvalidInput(new No(true), $input);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->locale = (string) setlocale(LC_ALL, '0');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function tearDown(): void
|
||||
{
|
||||
setlocale(LC_ALL, $this->locale);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,24 +34,6 @@ final class UploadedTest extends RuleTestCase
|
|||
{
|
||||
public const UPLOADED_FILENAME = 'uploaded.ext';
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function setUp(): void
|
||||
{
|
||||
if (!extension_loaded('uopz')) {
|
||||
throw new SkippedTestError('Extension "uopz" is required to test "Uploaded" rule');
|
||||
}
|
||||
|
||||
uopz_set_return(
|
||||
'is_uploaded_file',
|
||||
static function (string $filename): bool {
|
||||
return $filename === UploadedTest::UPLOADED_FILENAME;
|
||||
},
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
|
@ -80,4 +62,22 @@ final class UploadedTest extends RuleTestCase
|
|||
[$rule, new stdClass()],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function setUp(): void
|
||||
{
|
||||
if (!extension_loaded('uopz')) {
|
||||
throw new SkippedTestError('Extension "uopz" is required to test "Uploaded" rule');
|
||||
}
|
||||
|
||||
uopz_set_return(
|
||||
'is_uploaded_file',
|
||||
static function (string $filename): bool {
|
||||
return $filename === UploadedTest::UPLOADED_FILENAME;
|
||||
},
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,22 +39,6 @@ final class YesTest extends RuleTestCase
|
|||
*/
|
||||
private $locale;
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->locale = (string) setlocale(LC_ALL, '0');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function tearDown(): void
|
||||
{
|
||||
setlocale(LC_ALL, $this->locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
|
@ -146,4 +130,20 @@ final class YesTest extends RuleTestCase
|
|||
|
||||
self::assertInvalidInput(new Yes(true), $input);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->locale = (string) setlocale(LC_ALL, '0');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected function tearDown(): void
|
||||
{
|
||||
setlocale(LC_ALL, $this->locale);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue