From fcd95238b131ec8554c2d25170f732ed2059c925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Slischka?= Date: Tue, 23 Mar 2021 18:38:11 +0100 Subject: [PATCH 1/7] Updated consistance for PHP 8.0 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 31c5fef..8283962 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ ], "require": { "php": "^7.2|^8.0", - "consistence/consistence": "^1.0 || ^2.0", + "consistence-community/consistence": "^2.1", "nette/utils": "^3.0 || ^2.4", "nette/http": "^3.0 || ^2.4", "jschaedl/iban-validation": "^1.0", From 43460fefafff79c9d035fa5b540b6d5f8b8ab250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Slischka?= Date: Tue, 23 Mar 2021 18:41:22 +0100 Subject: [PATCH 2/7] Supports PHP 7.4 and higher --- .github/workflows/main.yaml | 5 +---- composer.json | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 00c96bf..9b63bd7 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -136,13 +136,10 @@ jobs: strategy: matrix: - php-version: [ '7.2', '7.3', '7.4' ] + php-version: [ '7.4' ] operating-system: [ 'ubuntu-latest' ] composer-args: [ '' ] include: - - php-version: '7.2' - operating-system: 'ubuntu-latest' - composer-args: '--prefer-lowest' - php-version: '8.0' operating-system: 'ubuntu-latest' composer-args: '--ignore-platform-reqs' diff --git a/composer.json b/composer.json index 8283962..3d34bf1 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ } ], "require": { - "php": "^7.2|^8.0", + "php": "^7.4|^8.0", "consistence-community/consistence": "^2.1", "nette/utils": "^3.0 || ^2.4", "nette/http": "^3.0 || ^2.4", From 9a036bc32c295a05219da84d99d05d04d3f3079e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Slischka?= Date: Mon, 26 Apr 2021 20:49:47 +0200 Subject: [PATCH 3/7] Full php 8.0 --- .github/workflows/main.yaml | 8 +- src/Address.php | 20 +- src/Arrays.php | 96 ++++----- src/Base64String.php | 7 +- src/CompanyRegistrationNumber.php | 5 +- src/DateTimeFormatter.php | 4 +- src/DateTimeRange.php | 15 +- src/DateTimes.php | 51 +---- src/DateTimesImmutable.php | 49 +---- src/Dates.php | 28 ++- src/DatesImmutable.php | 24 +-- src/Domain.php | 5 +- src/Duration.php | 23 +-- src/Emailaddress.php | 15 +- src/Enum.php | 5 +- .../EnumExtractableTrait.php | 8 +- src/ExtractableTraits/ExtractableTrait.php | 65 +++--- .../FloatExtractableTrait.php | 2 +- src/ExtractableTraits/IntExtractableTrait.php | 2 +- .../StringExtractableTrait.php | 2 +- src/Guid.php | 5 +- src/Helpers/CountryCodeToPhoneCodeTable.php | 2 +- src/Helpers/ExtractableHelpers.php | 20 +- src/Helpers/InvisibleSpaceCharacterCodes.php | 2 +- src/Helpers/StringHelpers.php | 4 +- src/Helpers/UniqueToStringArray.php | 9 +- src/Hex32.php | 5 +- src/HexColor.php | 5 +- src/Iban.php | 14 +- src/InvalidTypeException.php | 24 +-- src/IpAddress.php | 12 +- src/JsonString.php | 11 +- src/KeyValuePair.php | 10 +- src/LoginCredentials.php | 10 +- src/NonEmptyString.php | 5 +- src/Part.php | 5 +- src/PhoneNumber.php | 16 +- src/Port.php | 5 +- src/Price.php | 15 +- src/PrimitiveTypes.php | 195 +++++------------- src/Quantity.php | 5 +- src/ReLUValue.php | 5 +- src/ScalarLeavesArray.php | 2 +- src/SigmoidValue.php | 5 +- src/SwiftBic.php | 5 +- src/ToStringInterface.php | 4 +- src/UniqueIntArray.php | 4 +- src/UniqueStringArray.php | 12 +- src/UnsignedFloat.php | 5 +- src/UnsignedInt.php | 5 +- src/UrlType.php | 32 +-- src/VatId.php | 35 ++-- src/ZipCode.php | 9 +- tests/DateTimesImmutableTest.phpt | 22 -- tests/DateTimesTest.phpt | 45 ---- tests/ExtractableTraitTest.phpt | 28 +-- tests/Helpers/ExtractableHelpersTest.phpt | 61 ++++++ tests/PrimitiveTypesTest.phpt | 87 -------- tests/UniqueStringArrayTest.phpt | 2 - tests/UrlTypeTest.phpt | 4 +- tools/cs/ruleset.xml | 4 +- 61 files changed, 370 insertions(+), 819 deletions(-) create mode 100644 tests/Helpers/ExtractableHelpersTest.phpt diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 9b63bd7..f3f7d35 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -21,7 +21,7 @@ jobs: strategy: matrix: - php-version: [ '7.4' ] + php-version: [ '8.0' ] operating-system: [ 'ubuntu-latest' ] fail-fast: false @@ -80,7 +80,7 @@ jobs: strategy: matrix: - php-version: [ '7.4' ] + php-version: [ '8.0' ] operating-system: [ 'ubuntu-latest' ] fail-fast: false @@ -136,7 +136,7 @@ jobs: strategy: matrix: - php-version: [ '7.4' ] + php-version: [ '8.0' ] operating-system: [ 'ubuntu-latest' ] composer-args: [ '' ] include: @@ -204,7 +204,7 @@ jobs: strategy: matrix: - php-version: [ '7.4' ] + php-version: [ '8.0' ] operating-system: [ 'ubuntu-latest' ] fail-fast: false diff --git a/src/Address.php b/src/Address.php index 87e5dd2..bdff811 100644 --- a/src/Address.php +++ b/src/Address.php @@ -11,25 +11,13 @@ final class Address use ArrayExtractableTrait; - /** - * @var string - */ - private $streetAndNumber; + private string $streetAndNumber; - /** - * @var string - */ - private $town; + private string $town; - /** - * @var \SmartEmailing\Types\ZipCode - */ - private $zipCode; + private ZipCode $zipCode; - /** - * @var \SmartEmailing\Types\CountryCode - */ - private $country; + private CountryCode $country; /** * @param array $data diff --git a/src/Arrays.php b/src/Arrays.php index b49e748..3343d06 100644 --- a/src/Arrays.php +++ b/src/Arrays.php @@ -14,7 +14,7 @@ abstract class Arrays * @return array */ final public static function getArray( - $value + mixed $value ): array { if (\is_array($value)) { return $value; @@ -29,9 +29,9 @@ final public static function getArray( * @return array|null */ final public static function getArrayOrNull( - $value, + mixed $value, bool $nullIfInvalid = false - ): ?array { + ): array | null { if (\is_array($value)) { return $value; } @@ -54,14 +54,14 @@ final public static function getArrayOrNull( /** * Preserves keys * - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractArray( - array $data, - string $key + array | \ArrayAccess $data, + string | int $key ): array { $value = ExtractableHelpers::extractValue($data, $key); @@ -76,17 +76,17 @@ final public static function extractArray( /** * Preserves keys * - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @param bool $nullIfInvalid * @return array|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractArrayOrNull( - array $data, - string $key, + array | \ArrayAccess $data, + string | int $key, bool $nullIfInvalid = false - ): ?array { + ): array | null { if (!isset($data[$key])) { return null; } @@ -107,7 +107,7 @@ final public static function extractArrayOrNull( * @return array */ final public static function getIntArray( - $value + mixed $value ): array { $array = self::getArray($value); @@ -126,9 +126,9 @@ final public static function getIntArray( * @return array|null */ final public static function getIntArrayOrNull( - $value, + mixed $value, bool $nullIfInvalid = false - ): ?array { + ): array | null { $array = self::getArrayOrNull($value, $nullIfInvalid); if ($array === null) { @@ -153,14 +153,14 @@ final public static function getIntArrayOrNull( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractIntArray( - array $data, - string $key + array | \ArrayAccess $data, + string | int $key ): array { $array = Arrays::extractArray($data, $key); @@ -174,17 +174,17 @@ final public static function extractIntArray( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @param bool $nullIfInvalid * @return array|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractIntArrayOrNull( - array $data, - string $key, + array | \ArrayAccess $data, + string | int $key, bool $nullIfInvalid = false - ): ?array { + ): array | null { $array = Arrays::extractArrayOrNull($data, $key, $nullIfInvalid); if ($array === null) { @@ -199,7 +199,7 @@ final public static function extractIntArrayOrNull( * @return array */ final public static function getFloatArray( - $value + mixed $value ): array { $array = self::getArray($value); @@ -218,9 +218,9 @@ final public static function getFloatArray( * @return array|null */ final public static function getFloatArrayOrNull( - $value, + mixed $value, bool $nullIfInvalid = false - ): ?array { + ): array | null { $array = self::getArrayOrNull($value, $nullIfInvalid); if ($array === null) { @@ -245,14 +245,14 @@ final public static function getFloatArrayOrNull( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractFloatArray( - array $data, - string $key + array | \ArrayAccess $data, + string | int $key ): array { $array = Arrays::extractArray($data, $key); @@ -266,17 +266,17 @@ final public static function extractFloatArray( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @param bool $nullIfInvalid * @return array|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractFloatArrayOrNull( - array $data, - string $key, + array | \ArrayAccess $data, + string | int $key, bool $nullIfInvalid = false - ): ?array { + ): array | null { $array = Arrays::extractArrayOrNull($data, $key, $nullIfInvalid); if ($array === null) { @@ -291,7 +291,7 @@ final public static function extractFloatArrayOrNull( * @return array */ final public static function getStringArray( - $value + mixed $value ): array { $array = self::getArray($value); @@ -310,9 +310,9 @@ final public static function getStringArray( * @return array|null */ final public static function getStringArrayOrNull( - $value, + mixed $value, bool $nullIfInvalid = false - ): ?array { + ): array | null { $array = self::getArrayOrNull($value, $nullIfInvalid); if ($array === null) { @@ -337,14 +337,14 @@ final public static function getStringArrayOrNull( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractStringArray( - array $data, - string $key + array | \ArrayAccess $data, + string | int $key ): array { $array = Arrays::extractArray($data, $key); @@ -358,17 +358,17 @@ final public static function extractStringArray( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @param bool $nullIfInvalid * @return array|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractStringArrayOrNull( - array $data, - string $key, + array | \ArrayAccess $data, + string | int $key, bool $nullIfInvalid = false - ): ?array { + ): array | null { $array = Arrays::extractArrayOrNull($data, $key, $nullIfInvalid); if ($array === null) { diff --git a/src/Base64String.php b/src/Base64String.php index 3f372a0..f324076 100644 --- a/src/Base64String.php +++ b/src/Base64String.php @@ -12,10 +12,7 @@ final class Base64String implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; private function __construct( string $value @@ -32,7 +29,7 @@ public static function encode( string $value ): self { - return new static( + return new self( \base64_encode($value) ); } diff --git a/src/CompanyRegistrationNumber.php b/src/CompanyRegistrationNumber.php index cce5c7a..0258d38 100644 --- a/src/CompanyRegistrationNumber.php +++ b/src/CompanyRegistrationNumber.php @@ -13,10 +13,7 @@ final class CompanyRegistrationNumber implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; private function __construct( string $value diff --git a/src/DateTimeFormatter.php b/src/DateTimeFormatter.php index 88a212d..c1f59f3 100644 --- a/src/DateTimeFormatter.php +++ b/src/DateTimeFormatter.php @@ -8,9 +8,9 @@ abstract class DateTimeFormatter { final public static function formatOrNull( - ?\DateTimeInterface $dateTime, + \DateTimeInterface | null $dateTime, string $format = DateTimeFormat::DATETIME - ): ?string { + ): string | null { if ($dateTime === null) { return null; } diff --git a/src/DateTimeRange.php b/src/DateTimeRange.php index 3f4d99e..61aaa16 100644 --- a/src/DateTimeRange.php +++ b/src/DateTimeRange.php @@ -11,20 +11,11 @@ final class DateTimeRange implements ToArrayInterface use ArrayExtractableTrait; - /** - * @var \DateTimeImmutable - */ - private $from; + private \DateTimeImmutable $from; - /** - * @var \DateTimeImmutable - */ - private $to; + private \DateTimeImmutable $to; - /** - * @var int - */ - private $durationInSeconds; + private int $durationInSeconds; /** * @param array $data diff --git a/src/DateTimes.php b/src/DateTimes.php index acc2f80..919dec2 100644 --- a/src/DateTimes.php +++ b/src/DateTimes.php @@ -4,17 +4,13 @@ namespace SmartEmailing\Types; -use Nette\Utils\Arrays; +use SmartEmailing\Types\Helpers\ExtractableHelpers; abstract class DateTimes { - /** - * @param mixed $value - * @return \DateTime - */ final public static function from( - $value + mixed $value ): \DateTime { if ($value instanceof \DateTime) { return $value; @@ -44,12 +40,12 @@ final public static function from( /** * @param mixed $value * @param bool $getNullIfInvalid - * @return \DateTime + * @return \DateTime|null */ public static function fromOrNull( - $value, + mixed $value, bool $getNullIfInvalid = false - ): ?\DateTime { + ): \DateTime | null { if ($value === null) { return null; } @@ -66,16 +62,16 @@ public static function fromOrNull( } /** - * @param array $data + * @param array|\ArrayAccess $data * @param string $key * @return \DateTime * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extract( - array &$data, + array | \ArrayAccess $data, string $key ): \DateTime { - $value = Arrays::get($data, $key, ''); + $value = ExtractableHelpers::extractValue($data, $key); try { return self::from($value); @@ -85,40 +81,13 @@ final public static function extract( } /** - * @param array $data - * @param string $key - * @return \DateTime - * @throws \SmartEmailing\Types\InvalidTypeException - * @deprecated Use Dates::extract - */ - final public static function extractDate( - array &$data, - string $key - ): \DateTime { - return Dates::extract($data, $key); - } - - /** - * @param array $data - * @param string $key - * @return \DateTime|null - * @deprecated Use Dates::extractDateOrNull - */ - final public static function extractDateOrNull( - array &$data, - string $key - ): ?\DateTime { - return Dates::extractOrNull($data, $key); - } - - /** - * @param array $data + * @param array|\ArrayAccess $data * @param string $key * @param bool $getNullIfInvalid * @return \DateTime */ final public static function extractOrNull( - array &$data, + array | \ArrayAccess $data, string $key, bool $getNullIfInvalid = false ): ?\DateTime { diff --git a/src/DateTimesImmutable.php b/src/DateTimesImmutable.php index 0738fef..ac3749f 100644 --- a/src/DateTimesImmutable.php +++ b/src/DateTimesImmutable.php @@ -7,12 +7,8 @@ abstract class DateTimesImmutable { - /** - * @param mixed $value - * @return \DateTimeImmutable - */ final public static function from( - $value + mixed $value ): \DateTimeImmutable { $dateTime = DateTimes::from($value); @@ -22,12 +18,12 @@ final public static function from( /** * @param mixed $value * @param bool $getNullIfInvalid - * @return \DateTimeImmutable + * @return \DateTimeImmutable|null */ public static function fromOrNull( - $value, + mixed $value, bool $getNullIfInvalid = false - ): ?\DateTimeImmutable { + ): \DateTimeImmutable | null { $dateTime = DateTimes::fromOrNull($value, $getNullIfInvalid); if ($dateTime === null) { @@ -38,13 +34,13 @@ public static function fromOrNull( } /** - * @param array $data + * @param array|\ArrayAccess $data * @param string $key * @return \DateTimeImmutable * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extract( - array &$data, + array | \ArrayAccess $data, string $key ): \DateTimeImmutable { $dateTime = DateTimes::extract( @@ -56,43 +52,16 @@ final public static function extract( } /** - * @param array $data - * @param string $key - * @return \DateTimeImmutable - * @throws \SmartEmailing\Types\InvalidTypeException - * @deprecated Use DatesImmutable::extract - */ - final public static function extractDate( - array &$data, - string $key - ): \DateTimeImmutable { - return DatesImmutable::extract($data, $key); - } - - /** - * @param array $data - * @param string $key - * @return \DateTimeImmutable|null - * @deprecated Use DatesImmutable::extractDateOrNull - */ - final public static function extractDateOrNull( - array &$data, - string $key - ): ?\DateTimeImmutable { - return DatesImmutable::extractOrNull($data, $key); - } - - /** - * @param array $data + * @param array|\ArrayAccess $data * @param string $key * @param bool $getNullIfInvalid * @return \DateTimeImmutable */ final public static function extractOrNull( - array &$data, + array | \ArrayAccess $data, string $key, bool $getNullIfInvalid = false - ): ?\DateTimeImmutable { + ): \DateTimeImmutable | null { $dateTime = DateTimes::extractOrNull( $data, $key, diff --git a/src/Dates.php b/src/Dates.php index 1de773f..3a3146d 100644 --- a/src/Dates.php +++ b/src/Dates.php @@ -4,17 +4,13 @@ namespace SmartEmailing\Types; -use Nette\Utils\Arrays; +use SmartEmailing\Types\Helpers\ExtractableHelpers; abstract class Dates { - /** - * @param mixed $value - * @return \DateTime - */ final public static function from( - $value + mixed $value ): \DateTime { if ($value instanceof \DateTimeInterface) { $value = $value->format('Y-m-d'); @@ -36,12 +32,12 @@ final public static function from( /** * @param mixed $value * @param bool $getNullIfInvalid - * @return \DateTime + * @return \DateTime|null */ public static function fromOrNull( - $value, + mixed $value, bool $getNullIfInvalid = false - ): ?\DateTime { + ): \DateTime | null { if ($value === null) { return null; } @@ -58,16 +54,16 @@ public static function fromOrNull( } /** - * @param array $data + * @param array|\ArrayAccess $data * @param string $key * @return \DateTime * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extract( - array &$data, + array | \ArrayAccess $data, string $key ): \DateTime { - $value = Arrays::get($data, $key, ''); + $value = ExtractableHelpers::extractValue($data, $key); try { return self::from($value); @@ -77,16 +73,16 @@ final public static function extract( } /** - * @param array $data + * @param array|\ArrayAccess $data * @param string $key * @param bool $getNullIfInvalid - * @return \DateTime + * @return \DateTime|null */ final public static function extractOrNull( - array &$data, + array | \ArrayAccess $data, string $key, bool $getNullIfInvalid = false - ): ?\DateTime { + ): \DateTime | null { if (!isset($data[$key])) { return null; } diff --git a/src/DatesImmutable.php b/src/DatesImmutable.php index 9295cc6..a6b6148 100644 --- a/src/DatesImmutable.php +++ b/src/DatesImmutable.php @@ -7,12 +7,8 @@ abstract class DatesImmutable { - /** - * @param mixed $value - * @return \DateTimeImmutable - */ final public static function from( - $value + mixed $value ): \DateTimeImmutable { $dateTime = Dates::from($value); @@ -22,12 +18,12 @@ final public static function from( /** * @param mixed $value * @param bool $getNullIfInvalid - * @return \DateTimeImmutable + * @return \DateTimeImmutable|null */ public static function fromOrNull( - $value, + mixed $value, bool $getNullIfInvalid = false - ): ?\DateTimeImmutable { + ): \DateTimeImmutable | null { $dateTime = Dates::fromOrNull($value, $getNullIfInvalid); if ($dateTime === null) { @@ -38,13 +34,13 @@ public static function fromOrNull( } /** - * @param array $data + * @param array|\ArrayAccess $data * @param string $key * @return \DateTimeImmutable * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extract( - array &$data, + array | \ArrayAccess $data, string $key ): \DateTimeImmutable { $dateTime = Dates::extract( @@ -56,16 +52,16 @@ final public static function extract( } /** - * @param array $data + * @param array|\ArrayAccess $data * @param string $key * @param bool $getNullIfInvalid - * @return \DateTimeImmutable + * @return \DateTimeImmutable|null */ final public static function extractOrNull( - array &$data, + array | \ArrayAccess $data, string $key, bool $getNullIfInvalid = false - ): ?\DateTimeImmutable { + ): \DateTimeImmutable | null { $dateTime = Dates::extractOrNull( $data, $key, diff --git a/src/Domain.php b/src/Domain.php index 8777dd0..048e088 100644 --- a/src/Domain.php +++ b/src/Domain.php @@ -19,10 +19,7 @@ final class Domain implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; private function __construct( string $value diff --git a/src/Duration.php b/src/Duration.php index 11f9385..2a27bd2 100644 --- a/src/Duration.php +++ b/src/Duration.php @@ -12,20 +12,11 @@ final class Duration implements ToStringInterface, ToArrayInterface use ExtractableTrait; - /** - * @var int - */ - private $value; + private int $value; - /** - * @var \SmartEmailing\Types\TimeUnit - */ - private $unit; + private TimeUnit $unit; - /** - * @var int - */ - private $lengthInSeconds; + private int $lengthInSeconds; /** * @param array $data @@ -42,12 +33,8 @@ private function __construct( $this->lengthInSeconds = (int) \abs($diff); } - /** - * @param mixed $data - * @return \SmartEmailing\Types\Duration - */ public static function from( - $data + mixed $data ): Duration { if ($data instanceof self) { return $data; @@ -85,7 +72,7 @@ public static function fromDateTimeModify( $value *= -1; } - return new static( + return new Duration( [ 'value' => $value, 'unit' => $unit->getValue(), diff --git a/src/Emailaddress.php b/src/Emailaddress.php index 5f6e61a..d2347ee 100644 --- a/src/Emailaddress.php +++ b/src/Emailaddress.php @@ -16,20 +16,11 @@ final class Emailaddress implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; - /** - * @var string - */ - private $localPart; + private string $localPart; - /** - * @var \SmartEmailing\Types\HostName - */ - private $hostName; + private HostName $hostName; private function __construct( string $value diff --git a/src/Enum.php b/src/Enum.php index 199f4ab..284170a 100644 --- a/src/Enum.php +++ b/src/Enum.php @@ -9,11 +9,8 @@ abstract class Enum extends \Consistence\Enum\Enum { - /** - * @param mixed $value - */ public static function checkValue( - $value + mixed $value ): void { try { diff --git a/src/ExtractableTraits/EnumExtractableTrait.php b/src/ExtractableTraits/EnumExtractableTrait.php index e68c853..f325e19 100644 --- a/src/ExtractableTraits/EnumExtractableTrait.php +++ b/src/ExtractableTraits/EnumExtractableTrait.php @@ -23,16 +23,16 @@ abstract public static function get( /** * @param mixed $data * @phpcsSuppress SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingReturnTypeHint - * @return self + * @return static */ final public static function from( - $data - ): self { + mixed $data + ): static { if ($data instanceof self) { return $data; } - return self::get($data); + return static::get($data); }/** @noinspection ReturnTypeCanBeDeclaredInspection */ } diff --git a/src/ExtractableTraits/ExtractableTrait.php b/src/ExtractableTraits/ExtractableTrait.php index a3d62a9..0ee1990 100644 --- a/src/ExtractableTraits/ExtractableTrait.php +++ b/src/ExtractableTraits/ExtractableTrait.php @@ -12,25 +12,20 @@ trait ExtractableTrait { - /** - * @param string|mixed|array $data - * @return self - */ abstract public static function from( - $data + mixed $data ): self; /** - * @param mixed|array $data - * @param string $key - * @return self + * @param array|\ArrayAccess $data + * @param string|int $key + * @return static * @throws \SmartEmailing\Types\InvalidTypeException */ public static function extract( - $data, - string $key - ): self - { + array | \ArrayAccess $data, + string | int $key + ): static { $value = ExtractableHelpers::extractValue($data, $key); if ($value instanceof self) { @@ -51,9 +46,9 @@ public static function extract( * @throws \SmartEmailing\Types\InvalidTypeException */ public static function fromOrNull( - $value, + mixed $value, bool $getNullIfInvalid = false - ): ?self + ): self | null { if ($value === null) { return null; @@ -71,17 +66,17 @@ public static function fromOrNull( } /** - * @param mixed|array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @param bool $nullIfInvalid * @return self|null * @throws \SmartEmailing\Types\InvalidTypeException */ public static function extractOrNull( - $data, - string $key, + array | \ArrayAccess $data, + string | int $key, bool $nullIfInvalid = false - ): ?self + ): self | null { if (!\is_array($data)) { throw InvalidTypeException::typeError('array', $data); @@ -103,14 +98,14 @@ public static function extractOrNull( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ public static function extractArrayOf( - array $data, - string $key + array | \ArrayAccess $data, + string | int $key ): array { $typedArray = Arrays::extractArray($data, $key); @@ -123,14 +118,14 @@ public static function extractArrayOf( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ public static function extractArrayOfOrEmpty( - array $data, - string $key + array | \ArrayAccess $data, + string | int $key ): array { if (!isset($data[$key])) { @@ -189,13 +184,13 @@ public static function getArrayOfSkipInvalid( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return array */ public static function extractArrayOfSkipInvalid( - array $data, - string $key + array | \ArrayAccess $data, + string | int $key ): array { $typedArray = Arrays::extractArray($data, $key); @@ -205,16 +200,16 @@ public static function extractArrayOfSkipInvalid( /** * @param mixed|array $data - * @param string $key + * @param string|int $key * @param bool $nullIfInvalid * @return self|null * @throws \SmartEmailing\Types\InvalidTypeException */ private static function tryToExtract( - $data, - string $key, + mixed $data, + string | int $key, bool $nullIfInvalid - ): ?self + ): self | null { try { return self::extract($data, $key); diff --git a/src/ExtractableTraits/FloatExtractableTrait.php b/src/ExtractableTraits/FloatExtractableTrait.php index 6730786..7c2aa4b 100644 --- a/src/ExtractableTraits/FloatExtractableTrait.php +++ b/src/ExtractableTraits/FloatExtractableTrait.php @@ -20,7 +20,7 @@ abstract public function __construct( * @return self */ final public static function from( - $data + mixed $data ): self { if ($data instanceof self) { return $data; diff --git a/src/ExtractableTraits/IntExtractableTrait.php b/src/ExtractableTraits/IntExtractableTrait.php index 7f0b3d2..6b26aed 100644 --- a/src/ExtractableTraits/IntExtractableTrait.php +++ b/src/ExtractableTraits/IntExtractableTrait.php @@ -20,7 +20,7 @@ abstract public function __construct( * @return self */ final public static function from( - $data + mixed $data ): self { if ($data instanceof self) { return $data; diff --git a/src/ExtractableTraits/StringExtractableTrait.php b/src/ExtractableTraits/StringExtractableTrait.php index e14f5a6..169814d 100644 --- a/src/ExtractableTraits/StringExtractableTrait.php +++ b/src/ExtractableTraits/StringExtractableTrait.php @@ -20,7 +20,7 @@ abstract public function __construct( * @return self */ final public static function from( - $data + mixed $data ): self { if ($data instanceof self) { return $data; diff --git a/src/Guid.php b/src/Guid.php index d9f2850..8323cc1 100644 --- a/src/Guid.php +++ b/src/Guid.php @@ -12,10 +12,7 @@ final class Guid implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; private function __construct( string $value diff --git a/src/Helpers/CountryCodeToPhoneCodeTable.php b/src/Helpers/CountryCodeToPhoneCodeTable.php index 7d0c9e3..fd01c12 100644 --- a/src/Helpers/CountryCodeToPhoneCodeTable.php +++ b/src/Helpers/CountryCodeToPhoneCodeTable.php @@ -12,7 +12,7 @@ abstract class CountryCodeToPhoneCodeTable /** * @var array */ - public static $countryCodesToPhoneCodes = [ + public static array $countryCodesToPhoneCodes = [ CountryCode::AF => 93, CountryCode::AL => 355, CountryCode::DZ => 213, diff --git a/src/Helpers/ExtractableHelpers.php b/src/Helpers/ExtractableHelpers.php index b5b33b3..bfec5fa 100644 --- a/src/Helpers/ExtractableHelpers.php +++ b/src/Helpers/ExtractableHelpers.php @@ -10,16 +10,24 @@ abstract class ExtractableHelpers { /** - * @param mixed|array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return mixed */ final public static function extractValue( - $data, - string $key - ) { + array | \ArrayAccess $data, + string | int $key + ): mixed { + if ($data instanceof \ArrayAccess) { + if (!$data->offsetExists($key)) { + throw InvalidTypeException::missingKey($key); + } + + return $data->offsetGet($key); + } + if (!\is_array($data)) { - throw InvalidTypeException::typeError('array', $data); + throw InvalidTypeException::typeError('array|\ArrayAccess', $data); } if (!\array_key_exists($key, $data)) { diff --git a/src/Helpers/InvisibleSpaceCharacterCodes.php b/src/Helpers/InvisibleSpaceCharacterCodes.php index 24dbeb4..21ee63e 100644 --- a/src/Helpers/InvisibleSpaceCharacterCodes.php +++ b/src/Helpers/InvisibleSpaceCharacterCodes.php @@ -10,7 +10,7 @@ abstract class InvisibleSpaceCharacterCodes /** * @var array */ - private static $codes = [ + private static array $codes = [ 0x9, 0xA, 0xB, diff --git a/src/Helpers/StringHelpers.php b/src/Helpers/StringHelpers.php index 1949e6f..23128be 100644 --- a/src/Helpers/StringHelpers.php +++ b/src/Helpers/StringHelpers.php @@ -41,8 +41,8 @@ final public static function sanitizeUtf8Mb4( } final public static function sanitizeUtf8Mb4OrNull( - ?string $string - ): ?string { + string | null $string + ): string | null { if ($string === null) { return null; } diff --git a/src/Helpers/UniqueToStringArray.php b/src/Helpers/UniqueToStringArray.php index 80da546..cb7cbd8 100644 --- a/src/Helpers/UniqueToStringArray.php +++ b/src/Helpers/UniqueToStringArray.php @@ -26,12 +26,9 @@ final class UniqueToStringArray implements \Countable, \IteratorAggregate /** * @var array<\SmartEmailing\Types\ToStringInterface> */ - private $objects; + private array $objects; - /** - * @var string - */ - private $type; + private string $type; /** * @param array<\SmartEmailing\Types\ToStringInterface> $data @@ -137,7 +134,7 @@ public function add( ): bool { $type = \get_class($valueObject); - if (!$this->type) { + if (!isset($this->type)) { $this->type = $type; } diff --git a/src/Hex32.php b/src/Hex32.php index b03e3b1..2e8e0a7 100644 --- a/src/Hex32.php +++ b/src/Hex32.php @@ -13,10 +13,7 @@ final class Hex32 implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; private function __construct( string $value diff --git a/src/HexColor.php b/src/HexColor.php index 5973020..d5d885f 100644 --- a/src/HexColor.php +++ b/src/HexColor.php @@ -13,10 +13,7 @@ final class HexColor implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; public function __construct( string $value diff --git a/src/Iban.php b/src/Iban.php index f003c98..4bff2dd 100644 --- a/src/Iban.php +++ b/src/Iban.php @@ -16,15 +16,9 @@ final class Iban implements ToStringInterface public const FORMAT_ELECTRONIC = 'electronic'; public const FORMAT_PRINT = 'print'; - /** - * @var \Iban\Validation\Iban - */ - private $iban; + private \Iban\Validation\Iban $iban; - /** - * @var string - */ - private $value; + private string $value; public function __construct( string $value @@ -47,7 +41,7 @@ public function getValue(): string public function getCountry(): CountryCode { - return CountryCode::from($this->iban->getCountryCode()); + return CountryCode::from($this->iban->countryCode()); } public function getFormatted( @@ -59,7 +53,7 @@ public function getFormatted( public function getChecksum(): int { - return (int) $this->iban->getChecksum(); + return (int) $this->iban->checksum(); } } diff --git a/src/InvalidTypeException.php b/src/InvalidTypeException.php index 628ac73..2d02030 100644 --- a/src/InvalidTypeException.php +++ b/src/InvalidTypeException.php @@ -12,7 +12,7 @@ class InvalidTypeException extends \RuntimeException final public function __construct( string $message = '', int $code = 0, - ?\Throwable $previous = null + \Throwable | null $previous = null ) { parent::__construct($message, $code, $previous); @@ -25,7 +25,7 @@ final public function __construct( */ public static function typeError( string $expected, - $value + mixed $value ): self { $type = self::getType($value); $description = self::getDescription($value); @@ -46,7 +46,7 @@ public static function typeError( */ public static function typesError( array $expected, - $value + mixed $value ): self { $type = self::getType($value); $description = self::getDescription($value); @@ -61,19 +61,19 @@ public static function typesError( } public static function missingKey( - string $key + string | int $key ): self { return new static('Missing key: ' . $key); } public static function cannotBeEmptyError( - string $key + string | int $key ): self { return new static('Array at key ' . $key . ' must not be empty.'); } public function wrap( - string $key + string | int $key ): self { $message = 'Problem at key ' . $key @@ -83,12 +83,8 @@ public function wrap( return new static($message); } - /** - * @param mixed $value - * @return string - */ private static function getType( - $value + mixed $value ): string { $type = \gettype($value); @@ -100,12 +96,8 @@ private static function getType( return $type; } - /** - * @param mixed $value - * @return string - */ private static function getDescription( - $value + mixed $value ): string { $description = ''; diff --git a/src/IpAddress.php b/src/IpAddress.php index d2c2eb0..7d604b1 100644 --- a/src/IpAddress.php +++ b/src/IpAddress.php @@ -13,15 +13,9 @@ final class IpAddress implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; - - /** - * @var int - */ - private $version; + private string $value; + + private int $version; private function __construct( string $value diff --git a/src/JsonString.php b/src/JsonString.php index 1e3364d..0adf273 100644 --- a/src/JsonString.php +++ b/src/JsonString.php @@ -14,10 +14,7 @@ final class JsonString implements ToStringInterface use ExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; private function __construct( string $value @@ -36,7 +33,7 @@ private function __construct( * @throws \SmartEmailing\Types\InvalidTypeException */ public static function from( - $data + mixed $data ): JsonString { if ($data instanceof self) { @@ -64,7 +61,7 @@ public static function from( * @return \SmartEmailing\Types\JsonString */ public static function encode( - $value, + mixed $value, bool $oneLine = false ): self { @@ -101,7 +98,7 @@ private function isValid( Json::decode($value); return true; - } catch (JsonException $e) { + } catch (JsonException) { return false; } } diff --git a/src/KeyValuePair.php b/src/KeyValuePair.php index 1c615d0..f955f8f 100644 --- a/src/KeyValuePair.php +++ b/src/KeyValuePair.php @@ -11,15 +11,9 @@ final class KeyValuePair implements ToArrayInterface use ArrayExtractableTrait; - /** - * @var string - */ - private $key; + private string $key; - /** - * @var string - */ - private $value; + private string $value; /** * @param array $data diff --git a/src/LoginCredentials.php b/src/LoginCredentials.php index d2e2a86..422b7d1 100644 --- a/src/LoginCredentials.php +++ b/src/LoginCredentials.php @@ -11,15 +11,9 @@ final class LoginCredentials use ArrayExtractableTrait; - /** - * @var string - */ - private $login; + private string $login; - /** - * @var string - */ - private $password; + private string $password; /** * @param array $data diff --git a/src/NonEmptyString.php b/src/NonEmptyString.php index ca877bb..c4f819c 100644 --- a/src/NonEmptyString.php +++ b/src/NonEmptyString.php @@ -13,10 +13,7 @@ final class NonEmptyString implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; public function __construct( string $value diff --git a/src/Part.php b/src/Part.php index b3727a9..8665cbd 100644 --- a/src/Part.php +++ b/src/Part.php @@ -12,10 +12,7 @@ final class Part implements ToStringInterface use FloatExtractableTrait; use ToStringTrait; - /** - * @var float - */ - private $value; + private float $value; public function __construct( float $value diff --git a/src/PhoneNumber.php b/src/PhoneNumber.php index dde1f33..fd2db27 100644 --- a/src/PhoneNumber.php +++ b/src/PhoneNumber.php @@ -14,10 +14,7 @@ final class PhoneNumber implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; private function __construct( string $value @@ -32,15 +29,6 @@ private function __construct( $this->value = $preprocessed; } - /** - * @return \SmartEmailing\Types\CountryCode - * @deprecated use PhoneNumber::guessCountry() - */ - public function getCountry(): ?CountryCode - { - return $this->guessCountry(); - } - public function guessCountry(): ?CountryCode { $input = CountryCodeToPhoneCodeTable::$countryCodesToPhoneCodes; @@ -100,7 +88,7 @@ public static function preprocess( private function initialize( string $value - ): ?string + ): string | null { $value = self::preprocess($value); diff --git a/src/Port.php b/src/Port.php index cc762e9..6478afa 100644 --- a/src/Port.php +++ b/src/Port.php @@ -12,10 +12,7 @@ final class Port implements ToStringInterface use IntExtractableTrait; use ToStringTrait; - /** - * @var int - */ - private $value; + private int $value; public function __construct( int $value diff --git a/src/Price.php b/src/Price.php index 6183ea7..292a375 100644 --- a/src/Price.php +++ b/src/Price.php @@ -11,20 +11,11 @@ final class Price use ArrayExtractableTrait; - /** - * @var float - */ - private $withoutVat; + private float $withoutVat; - /** - * @var float - */ - private $withVat; + private float $withVat; - /** - * @var \SmartEmailing\Types\CurrencyCode - */ - private $currency; + private CurrencyCode $currency; /** * @param array $data diff --git a/src/PrimitiveTypes.php b/src/PrimitiveTypes.php index 29e3388..62ded1a 100644 --- a/src/PrimitiveTypes.php +++ b/src/PrimitiveTypes.php @@ -11,12 +11,8 @@ abstract class PrimitiveTypes { - /** - * @param mixed $value - * @return int - */ final public static function getInt( - $value + mixed $value ): int { if (Validators::isNumericInt($value)) { return (int) $value; @@ -31,9 +27,9 @@ final public static function getInt( * @return int|null */ final public static function getIntOrNull( - $value, + mixed $value, bool $nullIfInvalid = false - ): ?int { + ): int | null { if ($value === null) { return null; } @@ -50,14 +46,14 @@ final public static function getIntOrNull( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return int * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractInt( - array $data, - string $key + array | \ArrayAccess $data, + string | int $key ): int { $value = ExtractableHelpers::extractValue($data, $key); @@ -73,7 +69,7 @@ final public static function extractInt( * @return float */ final public static function getFloat( - $value + mixed $value ): float { if (\is_string($value)) { $value = \strtr( @@ -97,9 +93,9 @@ final public static function getFloat( * @return float|null */ final public static function getFloatOrNull( - $value, + mixed $value, bool $nullIfInvalid = false - ): ?float { + ): float | null { if ($value === null) { return null; } @@ -116,13 +112,13 @@ final public static function getFloatOrNull( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return float */ final public static function extractFloat( - array $data, - string $key + array | \ArrayAccess $data, + string | int $key ): float { $value = ExtractableHelpers::extractValue($data, $key); @@ -134,17 +130,17 @@ final public static function extractFloat( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @param bool $nullIfInvalid - * @return float + * @return float|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractFloatOrNull( - array $data, - string $key, + array | \ArrayAccess $data, + string | int $key, bool $nullIfInvalid = false - ): ?float { + ): float | null { if (!isset($data[$key])) { return null; } @@ -161,17 +157,17 @@ final public static function extractFloatOrNull( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @param bool $nullIfInvalid - * @return int + * @return int|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractIntOrNull( - array $data, - string $key, + array | \ArrayAccess $data, + string | int $key, bool $nullIfInvalid = false - ): ?int { + ): int | null { if (!isset($data[$key])) { return null; } @@ -188,15 +184,15 @@ final public static function extractIntOrNull( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @param bool $nullIfInvalid * @return bool|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractBoolOrNull( - array $data, - string $key, + array | \ArrayAccess $data, + string | int $key, bool $nullIfInvalid = false ): ?bool { if (!isset($data[$key])) { @@ -215,17 +211,17 @@ final public static function extractBoolOrNull( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @param bool $nullIfInvalid * @return string|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractStringOrNull( - array $data, - string $key, + array | \ArrayAccess $data, + string | int $key, bool $nullIfInvalid = false - ): ?string { + ): string | null { if ( !isset($data[$key]) || $data[$key] === '' @@ -244,12 +240,8 @@ final public static function extractStringOrNull( } } - /** - * @param mixed $value - * @return string - */ final public static function getString( - $value + mixed $value ): string { if (\is_scalar($value)) { return (string) $value; @@ -264,9 +256,9 @@ final public static function getString( * @return string|null */ final public static function getStringOrNull( - $value, + mixed $value, bool $nullIfInvalid = false - ): ?string { + ): string | null { if ($value === null) { return null; } @@ -283,14 +275,14 @@ final public static function getStringOrNull( } /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return string * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractString( - array $data, - string $key + array | \ArrayAccess $data, + string | int$key ): string { $value = ExtractableHelpers::extractValue($data, $key); @@ -301,12 +293,8 @@ final public static function extractString( } } - /** - * @param mixed $value - * @return bool - */ final public static function getBool( - $value + mixed $value ): bool { if (\is_bool($value)) { return $value; @@ -333,9 +321,9 @@ final public static function getBool( * @return bool|null */ final public static function getBoolOrNull( - $value, + mixed $value, bool $nullIfInvalid = false - ): ?bool { + ): bool | null { if ($value === null) { return null; } @@ -352,25 +340,14 @@ final public static function getBoolOrNull( } /** - * @param mixed $value - * @return array - * @deprecated use Arrays::getArray instead - */ - final public static function getArray( - $value - ): array { - return Arrays::getArray($value); - } - - /** - * @param array $data - * @param string $key + * @param array|\ArrayAccess $data + * @param string|int $key * @return bool * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractBool( - array $data, - string $key + array | \ArrayAccess $data, + string | int $key ): bool { $value = ExtractableHelpers::extractValue($data, $key); @@ -381,78 +358,4 @@ final public static function extractBool( } } - /** - * @param array $data - * @param string $key - * @return array - * @throws \SmartEmailing\Types\InvalidTypeException - * @deprecated use Arrays::extractStringArray - */ - final public static function extractStringArray( - array $data, - string $key - ): array { - return Arrays::extractStringArray( - $data, - $key - ); - } - - /** - * @param array $data - * @param string $key - * @return array - * @throws \SmartEmailing\Types\InvalidTypeException - * @deprecated use Arrays::extractIntArray - */ - final public static function extractIntArray( - array $data, - string $key - ): array { - return Arrays::extractIntArray( - $data, - $key - ); - } - - /** - * Preserves keys - * - * @param array $data - * @param string $key - * @return array - * @throws \SmartEmailing\Types\InvalidTypeException - * @deprecated use Arrays::extractArray - */ - final public static function extractArray( - array &$data, - string $key - ): array - { - return Arrays::extractArray( - $data, - $key - ); - } - - /** - * Preserves keys - * - * @param array $data - * @param string $key - * @return array|null - * @throws \SmartEmailing\Types\InvalidTypeException - * @deprecated use Arrays::extractArrayOrNull - */ - final public static function extractArrayOrNull( - array &$data, - string $key - ): ?array - { - return Arrays::extractArrayOrNull( - $data, - $key - ); - } - } diff --git a/src/Quantity.php b/src/Quantity.php index d6446e6..cef53fc 100644 --- a/src/Quantity.php +++ b/src/Quantity.php @@ -12,10 +12,7 @@ final class Quantity implements ToStringInterface use IntExtractableTrait; use ToStringTrait; - /** - * @var int - */ - private $value; + private int $value; public function __construct( int $value diff --git a/src/ReLUValue.php b/src/ReLUValue.php index 922a089..df6a4dd 100644 --- a/src/ReLUValue.php +++ b/src/ReLUValue.php @@ -12,10 +12,7 @@ final class ReLUValue implements ToStringInterface use FloatExtractableTrait; use ToStringTrait; - /** - * @var float - */ - private $value; + private float $value; public function __construct( float $value diff --git a/src/ScalarLeavesArray.php b/src/ScalarLeavesArray.php index 30fb444..6d067a5 100644 --- a/src/ScalarLeavesArray.php +++ b/src/ScalarLeavesArray.php @@ -15,7 +15,7 @@ final class ScalarLeavesArray implements ToArrayInterface /** * @var array */ - private $data; + private array $data; /** * @param array $data diff --git a/src/SigmoidValue.php b/src/SigmoidValue.php index de332fd..d28f911 100644 --- a/src/SigmoidValue.php +++ b/src/SigmoidValue.php @@ -12,10 +12,7 @@ final class SigmoidValue implements ToStringInterface use FloatExtractableTrait; use ToStringTrait; - /** - * @var float - */ - private $value; + private float $value; public function __construct( float $value diff --git a/src/SwiftBic.php b/src/SwiftBic.php index 5102c97..6891e86 100644 --- a/src/SwiftBic.php +++ b/src/SwiftBic.php @@ -13,10 +13,7 @@ final class SwiftBic implements ToStringInterface use ToStringTrait; use StringExtractableTrait; - /** - * @var string - */ - private $value; + private string $value; public function __construct( string $value diff --git a/src/ToStringInterface.php b/src/ToStringInterface.php index 673c25b..538121c 100644 --- a/src/ToStringInterface.php +++ b/src/ToStringInterface.php @@ -4,7 +4,9 @@ namespace SmartEmailing\Types; -interface ToStringInterface +use Stringable; + +interface ToStringInterface extends Stringable { public function __toString(): string; diff --git a/src/UniqueIntArray.php b/src/UniqueIntArray.php index 10f873a..723cb87 100644 --- a/src/UniqueIntArray.php +++ b/src/UniqueIntArray.php @@ -18,7 +18,7 @@ final class UniqueIntArray implements \Countable, \IteratorAggregate, ToArrayInt /** * @var array */ - private $valuesPresenceMap; + private array $valuesPresenceMap; /** * @param array $data @@ -32,7 +32,7 @@ private function __construct( foreach ($data as $value) { try { $this->add(PrimitiveTypes::getInt($value)); - } catch (InvalidTypeException $e) { + } catch (InvalidTypeException) { throw InvalidTypeException::typeError('all members of array to be int', $value); } } diff --git a/src/UniqueStringArray.php b/src/UniqueStringArray.php index 42ca95f..f8812da 100644 --- a/src/UniqueStringArray.php +++ b/src/UniqueStringArray.php @@ -18,7 +18,7 @@ final class UniqueStringArray implements \Countable, \IteratorAggregate, ToArray /** * @var array */ - private $valuesPresenceMap; + private array $valuesPresenceMap; /** * @param array $data @@ -32,7 +32,7 @@ private function __construct( foreach ($data as $value) { try { $this->add(PrimitiveTypes::getString($value)); - } catch (InvalidTypeException $e) { + } catch (InvalidTypeException) { throw InvalidTypeException::typeError('all members of array to be string', $value); } } @@ -71,14 +71,6 @@ public function toArray(): array return $this->getValues(); } - /** - * @deprecated This method does nothing because array is already unique - */ - public function removeDuplicities(): void - { - $this->valuesPresenceMap = \array_unique($this->valuesPresenceMap); - } - public function add( string $id ): bool { diff --git a/src/UnsignedFloat.php b/src/UnsignedFloat.php index f7e6a8f..870c171 100644 --- a/src/UnsignedFloat.php +++ b/src/UnsignedFloat.php @@ -12,10 +12,7 @@ final class UnsignedFloat implements ToStringInterface use FloatExtractableTrait; use ToStringTrait; - /** - * @var float - */ - private $value; + private float $value; public function __construct( float $value diff --git a/src/UnsignedInt.php b/src/UnsignedInt.php index 76068d4..4a089cb 100644 --- a/src/UnsignedInt.php +++ b/src/UnsignedInt.php @@ -12,10 +12,7 @@ final class UnsignedInt implements ToStringInterface use IntExtractableTrait; use ToStringTrait; - /** - * @var int - */ - private $value; + private int $value; public function __construct( int $value diff --git a/src/UrlType.php b/src/UrlType.php index 8f6787e..d3f5359 100644 --- a/src/UrlType.php +++ b/src/UrlType.php @@ -16,10 +16,7 @@ final class UrlType implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var \Nette\Http\Url - */ - private $url; + private Url $url; private function __construct( string $value @@ -81,32 +78,11 @@ public function getAbsoluteUrl(): string return $this->getValue(); } - /** - * @param string $name - * @return string|null - * @deprecated use getQueryParameter instead - */ - public function getParameter( - string $name - ): ?string - { - return $this->url->getQueryParameter($name) ?? null; - } - public function getBaseUrl(): string { return $this->url->getBaseUrl(); } - /** - * @return string - * @deprecated use getValue or (string) type cast - */ - public function toString(): string - { - return (string) $this->url; - } - public function getScheme(): string { return $this->url->getScheme(); @@ -146,7 +122,7 @@ public function getParameters(): array */ public function withQueryParameter( string $name, - $value + mixed $value ): self { $dolly = clone $this; @@ -218,7 +194,7 @@ public function withPath( */ public function getQueryParameter( string $name, - $default = null + mixed $default = null ) { return $this->url->getQueryParameter($name) ?? $default; @@ -231,7 +207,7 @@ public function getValue(): string private function addSlashToPathOrFail( string $value - ): ?string + ): string | null { $urlParts = \parse_url($value); diff --git a/src/VatId.php b/src/VatId.php index 31c2a9c..bf88727 100644 --- a/src/VatId.php +++ b/src/VatId.php @@ -15,25 +15,16 @@ final class VatId implements ToStringInterface use ToStringTrait; use StringExtractableTrait; - /** - * @var \SmartEmailing\Types\CountryCode|null - */ - private $country; + private CountryCode | null $country; - /** - * @var string|null - */ - private $prefix; + private string | null $prefix; - /** - * @var string - */ - private $vatNumber; + private string $vatNumber; /** * @var array */ - private static $patternsByCountry = [ + private static array $patternsByCountry = [ CountryCode::AT => 'ATU\d{8}', CountryCode::BE => 'BE[0-1]\d{9}', CountryCode::BG => 'BG\d{9,10}', @@ -77,12 +68,12 @@ private function __construct( } } - public function getCountry(): ?CountryCode + public function getCountry(): CountryCode | null { return $this->country; } - public function getPrefix(): ?string + public function getPrefix(): string | null { return $this->prefix; } @@ -122,15 +113,15 @@ private static function parseCountryOrNull( try { return CountryCode::from($countryCode); - } catch (InvalidTypeException $e) { + } catch (InvalidTypeException) { return null; } } private static function parsePrefixOrNull( - ?CountryCode $country, + CountryCode | null $country, string $vatId - ): ?string + ): string | null { if (!$country) { return null; @@ -140,7 +131,7 @@ private static function parsePrefixOrNull( } private static function parseVatNumber( - ?CountryCode $country, + CountryCode | null $country, string $vatId ): string { @@ -150,8 +141,8 @@ private static function parseVatNumber( } private static function validate( - ?CountryCode $country, - ?string $prefix, + CountryCode | null $country, + string | null $prefix, string $vatNumber ): bool { @@ -164,7 +155,7 @@ private static function validate( private static function isValidForCountry( CountryCode $country, - ?string $prefix, + string | null $prefix, string $vatNumber ): bool { diff --git a/src/ZipCode.php b/src/ZipCode.php index b2e1c6a..f15b5ff 100644 --- a/src/ZipCode.php +++ b/src/ZipCode.php @@ -15,15 +15,12 @@ final class ZipCode implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; /** - * @var array + * @var array */ - private static $patternsByCountry = [ + private static array $patternsByCountry = [ CountryCode::CZ => '#^\d{3}?\d{2}\z#', CountryCode::SK => '#^\d{3}?\d{2}\z#', CountryCode::AT => '#^\d{4}\z#', diff --git a/tests/DateTimesImmutableTest.phpt b/tests/DateTimesImmutableTest.phpt index 9d75e5c..5f5f900 100644 --- a/tests/DateTimesImmutableTest.phpt +++ b/tests/DateTimesImmutableTest.phpt @@ -45,28 +45,6 @@ final class DateTimesImmutableTest extends TestCase Assert::type(\DateTimeImmutable::class, $d); } - public function testExtractDate(): void - { - $data = [ - 'b' => '2000-01-01', - ]; - $d = DateTimesImmutable::extractDate($data, 'b'); - Assert::type(\DateTimeImmutable::class, $d); - } - - public function testExtractDateOrNull(): void - { - $data = [ - 'b' => '2000-01-01', - ]; - - $d = DateTimesImmutable::extractDateOrNull($data, 'not-a-key'); - Assert::null($d); - - $d = DateTimesImmutable::extractDateOrNull($data, 'b'); - Assert::type(\DateTimeImmutable::class, $d); - } - public function testExtractOrNull(): void { $data = [ diff --git a/tests/DateTimesTest.phpt b/tests/DateTimesTest.phpt index 37ad367..3e2de29 100644 --- a/tests/DateTimesTest.phpt +++ b/tests/DateTimesTest.phpt @@ -81,51 +81,6 @@ final class DateTimesTest extends TestCase Assert::type(\DateTime::class, $d); } - public function testExtractDate(): void - { - $d = DateTimes::from('2010-01-01 10:00:00'); - $data = [ - 'a' => 'xx', - 'b' => '2000-01-01', - 'c' => $d, - ]; - - Assert::throws( - static function () use ($data): void { - DateTimes::extractDate($data, 'a'); - }, - InvalidTypeException::class - ); - - Assert::throws( - static function () use ($data): void { - DateTimes::extractDate($data, 'not-key'); - }, - InvalidTypeException::class - ); - - $d = DateTimes::extractDate($data, 'b'); - Assert::type(\DateTime::class, $d); - Assert::equal('2000-01-01 00:00:00', DateTimeFormatter::format($d)); - - $d = DateTimes::extractDate($data, 'c'); - Assert::type(\DateTime::class, $d); - Assert::equal('2010-01-01 00:00:00', DateTimeFormatter::format($d)); - } - - public function testExtractDateOrNull(): void - { - $data = [ - 'b' => '2000-01-01', - ]; - - $d = DateTimes::extractDateOrNull($data, 'not-a-key'); - Assert::null($d); - - $d = DateTimes::extractDateOrNull($data, 'b'); - Assert::type(\DateTime::class, $d); - } - public function testExtractOrNull(): void { $d = DateTimes::from('2010-01-01 10:00:00'); diff --git a/tests/ExtractableTraitTest.phpt b/tests/ExtractableTraitTest.phpt index 13875ff..0a9f937 100644 --- a/tests/ExtractableTraitTest.phpt +++ b/tests/ExtractableTraitTest.phpt @@ -17,12 +17,13 @@ final class ExtractableTraitTest extends TestCase public function testExtract(): void { - Assert::throws( - static function (): void { - Emailaddress::extract('aa', 'x'); - }, - InvalidTypeException::class - ); + // todo temove + // Assert::throws( + // static function (): void { + // Emailaddress::extract('aa', 'x'); + // }, + // InvalidTypeException::class + // ); $emailaddress1 = Emailaddress::from('martin+1@smartemailing.cz'); $data = [ @@ -135,13 +136,14 @@ final class ExtractableTraitTest extends TestCase public function testExtractOrNull(): void { - Assert::throws( - static function (): void { - $data = 'a'; - Emailaddress::extractOrNull($data, 'a'); - }, - InvalidTypeException::class - ); + // todo remove + // Assert::throws( + // static function (): void { + // $data = 'a'; + // Emailaddress::extractOrNull($data, 'a'); + // }, + // InvalidTypeException::class + // ); $data = [ 'a' => '', diff --git a/tests/Helpers/ExtractableHelpersTest.phpt b/tests/Helpers/ExtractableHelpersTest.phpt new file mode 100644 index 0000000..90484ae --- /dev/null +++ b/tests/Helpers/ExtractableHelpersTest.phpt @@ -0,0 +1,61 @@ + 'a', 1 => 1]; + Assert::same('a', ExtractableHelpers::extractValue($array, 'a')); + + Assert::same(1, ExtractableHelpers::extractValue($array, 1)); + + Assert::exception( + static fn () => ExtractableHelpers::extractValue($array, 'b'), + InvalidTypeException::class, + 'Missing key: b', + ); + + Assert::exception( + static fn () => ExtractableHelpers::extractValue($array, '2'), + InvalidTypeException::class, + 'Missing key: 2', + ); + } + + public function testExtractValueFromArrayAccess(): void + { + $arrayObject = new ArrayObject(['a' => 'a', 1 => 1]); + + Assert::same('a', ExtractableHelpers::extractValue($arrayObject, 'a')); + + Assert::same(1, ExtractableHelpers::extractValue($arrayObject, 1)); + + Assert::exception( + static fn () => ExtractableHelpers::extractValue($arrayObject, 'b'), + InvalidTypeException::class, + 'Missing key: b', + ); + + Assert::exception( + static fn () => ExtractableHelpers::extractValue($arrayObject, '2'), + InvalidTypeException::class, + 'Missing key: 2', + ); + } + +} + +(new ExtractableHelpersTest())->run(); diff --git a/tests/PrimitiveTypesTest.phpt b/tests/PrimitiveTypesTest.phpt index d6aab13..af8ba00 100644 --- a/tests/PrimitiveTypesTest.phpt +++ b/tests/PrimitiveTypesTest.phpt @@ -77,25 +77,6 @@ final class PrimitiveTypesTest extends TestCase InvalidTypeException::class ); - $array = [ - 121, - 112, - 211, - 111, - ]; - - Assert::equal( - $array, - PrimitiveTypes::extractIntArray(['test' => $array], 'test') - ); - - Assert::throws( - static function (): void { - PrimitiveTypes::extractIntArray(['test' => [[]]], 'test'); - }, - InvalidTypeException::class - ); - Assert::equal(10174, PrimitiveTypes::getInt('0010174')); Assert::equal(0, PrimitiveTypes::getInt('0')); @@ -224,25 +205,6 @@ final class PrimitiveTypesTest extends TestCase }, InvalidTypeException::class ); - - $array = [ - 'aaa', - 'bbb', - 'ccc', - ]; - - Assert::equal( - $array, - PrimitiveTypes::extractStringArray(['test' => $array], 'test') - ); - - Assert::throws( - static function (): void { - PrimitiveTypes::extractStringArray(['test' => [[]]], 'test'); - }, - InvalidTypeException::class, - 'Problem at key test: Expected string, got array' - ); } public function testBool(): void @@ -321,55 +283,6 @@ final class PrimitiveTypesTest extends TestCase Assert::null(PrimitiveTypes::extractBoolOrNull(['test' => []], 'test', true)); } - public function testArray(): void - { - Assert::equal([1, 2, 3], PrimitiveTypes::getArray([1, 2, 3])); - - Assert::throws( - static function (): void { - PrimitiveTypes::getArray('aaa'); - }, - InvalidTypeException::class, - 'Expected array, got string (aaa)' - ); - } - - public function testExtractArray(): void - { - $data = [ - 'non_empty_array' => [1, 2, 3], - 'not_an_array' => 'hello!', - ]; - - Assert::same([1, 2, 3], PrimitiveTypes::extractArray($data, 'non_empty_array')); - Assert::exception( - static function () use ($data): void { - PrimitiveTypes::extractArrayOrNull($data, 'not_an_array'); - }, - InvalidTypeException::class, - 'Problem at key not_an_array: Expected array, got string (hello!)' - ); - } - - public function testExtractArrayOrNull(): void - { - $data = [ - 'null' => null, - 'non_empty_array' => [1, 2, 3], - 'not_an_array' => 'hello!', - ]; - - Assert::null(PrimitiveTypes::extractArrayOrNull($data, 'test')); - Assert::null(PrimitiveTypes::extractArrayOrNull($data, 'null')); - Assert::same([1, 2, 3], PrimitiveTypes::extractArrayOrNull($data, 'non_empty_array')); - Assert::exception( - static function () use ($data): void { - PrimitiveTypes::extractArrayOrNull($data, 'not_an_array'); - }, - InvalidTypeException::class - ); - } - } (new PrimitiveTypesTest())->run(); diff --git a/tests/UniqueStringArrayTest.phpt b/tests/UniqueStringArrayTest.phpt index 8e08dde..7f61992 100644 --- a/tests/UniqueStringArrayTest.phpt +++ b/tests/UniqueStringArrayTest.phpt @@ -127,8 +127,6 @@ final class UniqueStringArrayTest extends TestCase $result->toArray() ); - $result->removeDuplicities(); - foreach ($result as $item) { Assert::type('string', $item); } diff --git a/tests/UrlTypeTest.phpt b/tests/UrlTypeTest.phpt index b63a199..607ff1f 100644 --- a/tests/UrlTypeTest.phpt +++ b/tests/UrlTypeTest.phpt @@ -101,10 +101,10 @@ final class UrlTypeTest extends TestCase Assert::equal('x=y', $url->getQueryString()); - Assert::equal('y', $url->getParameter('x')); + Assert::equal('y', $url->getQueryParameter('x')); Assert::equal('https://www.seznam.cz/?x=y', $url->getValue()); - Assert::equal('https://www.seznam.cz/?x=y', $url->toString()); + Assert::equal('https://www.seznam.cz/?x=y', (string) $url); Assert::throws( static function (): void { diff --git a/tools/cs/ruleset.xml b/tools/cs/ruleset.xml index 0867b21..3b59bfe 100644 --- a/tools/cs/ruleset.xml +++ b/tools/cs/ruleset.xml @@ -1,6 +1,6 @@ - + @@ -29,7 +29,7 @@ - + From 2f76173c86fd6ba137a8c522f3c0d88c03a11b43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Slischka?= Date: Mon, 26 Apr 2021 21:15:52 +0200 Subject: [PATCH 4/7] Fixed composer and code style --- .github/workflows/main.yaml | 4 -- composer.json | 7 +-- src/Arrays.php | 24 -------- src/CompanyRegistrationNumber.php | 2 - src/DateTimes.php | 12 +--- src/DateTimesImmutable.php | 9 --- src/Dates.php | 12 +--- src/DatesImmutable.php | 10 ---- src/DomainName.php | 5 +- src/Emailaddress.php | 2 +- .../ArrayExtractableTrait.php | 6 +- .../EnumExtractableTrait.php | 5 +- src/ExtractableTraits/ExtractableTrait.php | 16 +----- .../FloatExtractableTrait.php | 4 -- src/ExtractableTraits/IntExtractableTrait.php | 4 -- .../StringExtractableTrait.php | 4 -- src/Helpers/ArrayHelpers.php | 8 +-- src/Helpers/ExtractableHelpers.php | 2 - src/Helpers/UniqueToStringArray.php | 2 +- src/Helpers/ValidationHelpers.php | 3 - src/HostName.php | 5 +- src/InvalidTypeException.php | 5 +- src/JsonString.php | 8 +-- src/PhoneNumber.php | 4 +- src/PrimitiveTypes.php | 46 +-------------- src/ScalarLeavesArray.php | 2 - src/UniqueArrayFeatures.php | 3 - src/UniqueIntArray.php | 3 - src/UrlType.php | 18 +----- src/VatId.php | 3 - tests/ArraysTest.phpt | 2 +- tests/DurationTest.phpt | 10 ++-- tests/Helpers/ExtractableHelpersTest.phpt | 8 +-- tests/VatIdTest.phpt | 2 - tools/cs/ruleset.xml | 56 +++---------------- 35 files changed, 39 insertions(+), 277 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index f3f7d35..743780c 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -139,10 +139,6 @@ jobs: php-version: [ '8.0' ] operating-system: [ 'ubuntu-latest' ] composer-args: [ '' ] - include: - - php-version: '8.0' - operating-system: 'ubuntu-latest' - composer-args: '--ignore-platform-reqs' fail-fast: false diff --git a/composer.json b/composer.json index 3d34bf1..8d9fa92 100644 --- a/composer.json +++ b/composer.json @@ -15,18 +15,17 @@ } ], "require": { - "php": "^7.4|^8.0", + "php": "^8.0", "consistence-community/consistence": "^2.1", "nette/utils": "^3.0 || ^2.4", "nette/http": "^3.0 || ^2.4", "jschaedl/iban-validation": "^1.0", - "egulias/email-validator": "^3.1.1" + "egulias/email-validator": "^3.1" }, "require-dev": { "nette/tester": "^2.3.0", "phpstan/phpstan-nette": "^0.12.8", - "slevomat/coding-standard": "^6.4", - "consistence/coding-standard": "^3.10", + "slevomat/coding-standard": "^7.0", "tracy/tracy": "^2.8" }, "autoload": { diff --git a/src/Arrays.php b/src/Arrays.php index 3343d06..7ac9456 100644 --- a/src/Arrays.php +++ b/src/Arrays.php @@ -10,7 +10,6 @@ abstract class Arrays { /** - * @param mixed $value * @return array */ final public static function getArray( @@ -24,8 +23,6 @@ final public static function getArray( } /** - * @param mixed $value - * @param bool $nullIfInvalid * @return array|null */ final public static function getArrayOrNull( @@ -55,7 +52,6 @@ final public static function getArrayOrNull( * Preserves keys * * @param array|\ArrayAccess $data - * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -77,8 +73,6 @@ final public static function extractArray( * Preserves keys * * @param array|\ArrayAccess $data - * @param string|int $key - * @param bool $nullIfInvalid * @return array|null * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -103,7 +97,6 @@ final public static function extractArrayOrNull( } /** - * @param mixed $value * @return array */ final public static function getIntArray( @@ -121,8 +114,6 @@ final public static function getIntArray( } /** - * @param mixed $value - * @param bool $nullIfInvalid * @return array|null */ final public static function getIntArrayOrNull( @@ -154,7 +145,6 @@ final public static function getIntArrayOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -175,8 +165,6 @@ final public static function extractIntArray( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @param bool $nullIfInvalid * @return array|null * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -195,7 +183,6 @@ final public static function extractIntArrayOrNull( } /** - * @param mixed $value * @return array */ final public static function getFloatArray( @@ -213,8 +200,6 @@ final public static function getFloatArray( } /** - * @param mixed $value - * @param bool $nullIfInvalid * @return array|null */ final public static function getFloatArrayOrNull( @@ -246,7 +231,6 @@ final public static function getFloatArrayOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -267,8 +251,6 @@ final public static function extractFloatArray( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @param bool $nullIfInvalid * @return array|null * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -287,7 +269,6 @@ final public static function extractFloatArrayOrNull( } /** - * @param mixed $value * @return array */ final public static function getStringArray( @@ -305,8 +286,6 @@ final public static function getStringArray( } /** - * @param mixed $value - * @param bool $nullIfInvalid * @return array|null */ final public static function getStringArrayOrNull( @@ -338,7 +317,6 @@ final public static function getStringArrayOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -359,8 +337,6 @@ final public static function extractStringArray( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @param bool $nullIfInvalid * @return array|null * @throws \SmartEmailing\Types\InvalidTypeException */ diff --git a/src/CompanyRegistrationNumber.php b/src/CompanyRegistrationNumber.php index 0258d38..c49bc15 100644 --- a/src/CompanyRegistrationNumber.php +++ b/src/CompanyRegistrationNumber.php @@ -163,8 +163,6 @@ private function isValidPL( } /** - * @param string $value - * @return bool * @see https://en.wikipedia.org/wiki/Employer_Identification_Number */ private function isValidUS( diff --git a/src/DateTimes.php b/src/DateTimes.php index 919dec2..468de37 100644 --- a/src/DateTimes.php +++ b/src/DateTimes.php @@ -37,11 +37,6 @@ final public static function from( ); } - /** - * @param mixed $value - * @param bool $getNullIfInvalid - * @return \DateTime|null - */ public static function fromOrNull( mixed $value, bool $getNullIfInvalid = false @@ -63,8 +58,6 @@ public static function fromOrNull( /** * @param array|\ArrayAccess $data - * @param string $key - * @return \DateTime * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extract( @@ -82,9 +75,6 @@ final public static function extract( /** * @param array|\ArrayAccess $data - * @param string $key - * @param bool $getNullIfInvalid - * @return \DateTime */ final public static function extractOrNull( array | \ArrayAccess $data, @@ -98,7 +88,7 @@ final public static function extractOrNull( if ($getNullIfInvalid) { try { return self::extract($data, $key); - } catch (InvalidTypeException $e) { + } catch (InvalidTypeException) { return null; } } diff --git a/src/DateTimesImmutable.php b/src/DateTimesImmutable.php index ac3749f..25b85df 100644 --- a/src/DateTimesImmutable.php +++ b/src/DateTimesImmutable.php @@ -15,11 +15,6 @@ final public static function from( return self::immutate($dateTime); } - /** - * @param mixed $value - * @param bool $getNullIfInvalid - * @return \DateTimeImmutable|null - */ public static function fromOrNull( mixed $value, bool $getNullIfInvalid = false @@ -35,8 +30,6 @@ public static function fromOrNull( /** * @param array|\ArrayAccess $data - * @param string $key - * @return \DateTimeImmutable * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extract( @@ -53,8 +46,6 @@ final public static function extract( /** * @param array|\ArrayAccess $data - * @param string $key - * @param bool $getNullIfInvalid * @return \DateTimeImmutable */ final public static function extractOrNull( diff --git a/src/Dates.php b/src/Dates.php index 3a3146d..869d906 100644 --- a/src/Dates.php +++ b/src/Dates.php @@ -29,11 +29,6 @@ final public static function from( ); } - /** - * @param mixed $value - * @param bool $getNullIfInvalid - * @return \DateTime|null - */ public static function fromOrNull( mixed $value, bool $getNullIfInvalid = false @@ -55,8 +50,6 @@ public static function fromOrNull( /** * @param array|\ArrayAccess $data - * @param string $key - * @return \DateTime * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extract( @@ -74,9 +67,6 @@ final public static function extract( /** * @param array|\ArrayAccess $data - * @param string $key - * @param bool $getNullIfInvalid - * @return \DateTime|null */ final public static function extractOrNull( array | \ArrayAccess $data, @@ -90,7 +80,7 @@ final public static function extractOrNull( if ($getNullIfInvalid) { try { return self::extract($data, $key); - } catch (InvalidTypeException $e) { + } catch (InvalidTypeException) { return null; } } diff --git a/src/DatesImmutable.php b/src/DatesImmutable.php index a6b6148..d5f8abd 100644 --- a/src/DatesImmutable.php +++ b/src/DatesImmutable.php @@ -15,11 +15,6 @@ final public static function from( return self::immutate($dateTime); } - /** - * @param mixed $value - * @param bool $getNullIfInvalid - * @return \DateTimeImmutable|null - */ public static function fromOrNull( mixed $value, bool $getNullIfInvalid = false @@ -35,8 +30,6 @@ public static function fromOrNull( /** * @param array|\ArrayAccess $data - * @param string $key - * @return \DateTimeImmutable * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extract( @@ -53,9 +46,6 @@ final public static function extract( /** * @param array|\ArrayAccess $data - * @param string $key - * @param bool $getNullIfInvalid - * @return \DateTimeImmutable|null */ final public static function extractOrNull( array | \ArrayAccess $data, diff --git a/src/DomainName.php b/src/DomainName.php index 70f8af0..b379664 100644 --- a/src/DomainName.php +++ b/src/DomainName.php @@ -13,10 +13,7 @@ final class DomainName implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; private function __construct( string $value diff --git a/src/Emailaddress.php b/src/Emailaddress.php index d2347ee..3bd9b4e 100644 --- a/src/Emailaddress.php +++ b/src/Emailaddress.php @@ -28,7 +28,7 @@ private function __construct( { try { $ok = $this->initialize($value); - } catch (\Throwable $e) { + } catch (\Throwable) { $ok = false; } diff --git a/src/ExtractableTraits/ArrayExtractableTrait.php b/src/ExtractableTraits/ArrayExtractableTrait.php index 02fd373..c1ce799 100644 --- a/src/ExtractableTraits/ArrayExtractableTrait.php +++ b/src/ExtractableTraits/ArrayExtractableTrait.php @@ -18,12 +18,8 @@ abstract public function __construct( array $data ); - /** - * @param string|mixed|array $data - * @return self - */ final public static function from( - $data + mixed $data ): self { if ($data instanceof self) { return $data; diff --git a/src/ExtractableTraits/EnumExtractableTrait.php b/src/ExtractableTraits/EnumExtractableTrait.php index f325e19..5fbd629 100644 --- a/src/ExtractableTraits/EnumExtractableTrait.php +++ b/src/ExtractableTraits/EnumExtractableTrait.php @@ -12,16 +12,13 @@ trait EnumExtractableTrait use ExtractableTrait; /** - * @param mixed $value - * @return \Consistence\Enum\Enum * @phpcsSuppress SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingReturnTypeHint */ abstract public static function get( - $value + mixed $value ): Enum; /** - * @param mixed $data * @phpcsSuppress SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingReturnTypeHint * @return static */ diff --git a/src/ExtractableTraits/ExtractableTrait.php b/src/ExtractableTraits/ExtractableTrait.php index 0ee1990..2f4225a 100644 --- a/src/ExtractableTraits/ExtractableTrait.php +++ b/src/ExtractableTraits/ExtractableTrait.php @@ -18,7 +18,6 @@ abstract public static function from( /** * @param array|\ArrayAccess $data - * @param string|int $key * @return static * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -40,9 +39,6 @@ public static function extract( } /** - * @param mixed $value - * @param bool $getNullIfInvalid - * @return self|null * @throws \SmartEmailing\Types\InvalidTypeException */ public static function fromOrNull( @@ -67,9 +63,6 @@ public static function fromOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @param bool $nullIfInvalid - * @return self|null * @throws \SmartEmailing\Types\InvalidTypeException */ public static function extractOrNull( @@ -99,7 +92,6 @@ public static function extractOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -119,7 +111,6 @@ public static function extractArrayOf( /** * @param array|\ArrayAccess $data - * @param string|int $key * @return array * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -175,7 +166,7 @@ public static function getArrayOfSkipInvalid( foreach ($array as $item) { try { $return[] = self::from($item); - } catch (InvalidTypeException $e) { + } catch (InvalidTypeException) { // exclude from result } } @@ -185,7 +176,6 @@ public static function getArrayOfSkipInvalid( /** * @param array|\ArrayAccess $data - * @param string|int $key * @return array */ public static function extractArrayOfSkipInvalid( @@ -199,10 +189,6 @@ public static function extractArrayOfSkipInvalid( } /** - * @param mixed|array $data - * @param string|int $key - * @param bool $nullIfInvalid - * @return self|null * @throws \SmartEmailing\Types\InvalidTypeException */ private static function tryToExtract( diff --git a/src/ExtractableTraits/FloatExtractableTrait.php b/src/ExtractableTraits/FloatExtractableTrait.php index 7c2aa4b..19a78d0 100644 --- a/src/ExtractableTraits/FloatExtractableTrait.php +++ b/src/ExtractableTraits/FloatExtractableTrait.php @@ -15,10 +15,6 @@ abstract public function __construct( float $value ); - /** - * @param string|mixed|array $data - * @return self - */ final public static function from( mixed $data ): self { diff --git a/src/ExtractableTraits/IntExtractableTrait.php b/src/ExtractableTraits/IntExtractableTrait.php index 6b26aed..9240496 100644 --- a/src/ExtractableTraits/IntExtractableTrait.php +++ b/src/ExtractableTraits/IntExtractableTrait.php @@ -15,10 +15,6 @@ abstract public function __construct( int $value ); - /** - * @param string|mixed|array $data - * @return self - */ final public static function from( mixed $data ): self { diff --git a/src/ExtractableTraits/StringExtractableTrait.php b/src/ExtractableTraits/StringExtractableTrait.php index 169814d..d82607b 100644 --- a/src/ExtractableTraits/StringExtractableTrait.php +++ b/src/ExtractableTraits/StringExtractableTrait.php @@ -15,10 +15,6 @@ abstract public function __construct( string $value ); - /** - * @param string|mixed|array $data - * @return self - */ final public static function from( mixed $data ): self { diff --git a/src/Helpers/ArrayHelpers.php b/src/Helpers/ArrayHelpers.php index f13aadd..099f27e 100644 --- a/src/Helpers/ArrayHelpers.php +++ b/src/Helpers/ArrayHelpers.php @@ -17,9 +17,7 @@ abstract class ArrayHelpers final public static function collectionItemsToArray( array $arrayableCollection ): array { - $toArrayCallback = static function (ToArrayInterface $toArray) { - return $toArray->toArray(); - }; + $toArrayCallback = static fn (ToArrayInterface $toArray): array => $toArray->toArray(); return \array_map( $toArrayCallback, @@ -34,9 +32,7 @@ final public static function collectionItemsToArray( final public static function stringExtractableCollectionToArray( array $stringableCollection ): array { - $toArrayCallback = static function (ToStringInterface $toString) { - return (string) $toString; - }; + $toArrayCallback = static fn (ToStringInterface $toString): string => (string) $toString; return \array_map( $toArrayCallback, diff --git a/src/Helpers/ExtractableHelpers.php b/src/Helpers/ExtractableHelpers.php index bfec5fa..c53ffd0 100644 --- a/src/Helpers/ExtractableHelpers.php +++ b/src/Helpers/ExtractableHelpers.php @@ -11,8 +11,6 @@ abstract class ExtractableHelpers /** * @param array|\ArrayAccess $data - * @param string|int $key - * @return mixed */ final public static function extractValue( array | \ArrayAccess $data, diff --git a/src/Helpers/UniqueToStringArray.php b/src/Helpers/UniqueToStringArray.php index cb7cbd8..7d101a9 100644 --- a/src/Helpers/UniqueToStringArray.php +++ b/src/Helpers/UniqueToStringArray.php @@ -132,7 +132,7 @@ public function toArray(): array public function add( ToStringInterface $valueObject ): bool { - $type = \get_class($valueObject); + $type = $valueObject::class; if (!isset($this->type)) { $this->type = $type; diff --git a/src/Helpers/ValidationHelpers.php b/src/Helpers/ValidationHelpers.php index 44778c7..7fd10f1 100644 --- a/src/Helpers/ValidationHelpers.php +++ b/src/Helpers/ValidationHelpers.php @@ -9,8 +9,6 @@ abstract class ValidationHelpers /** * @param array $array - * @param string $typeName - * @return bool */ final public static function isTypedObjectArray( array $array, @@ -29,7 +27,6 @@ final public static function isTypedObjectArray( * Validates multidimensional array to have scalar or NULL leaves * * @param array $array - * @return bool */ final public static function isScalarLeavesArray( array $array diff --git a/src/HostName.php b/src/HostName.php index 6755541..a4b7138 100644 --- a/src/HostName.php +++ b/src/HostName.php @@ -13,10 +13,7 @@ final class HostName implements ToStringInterface use StringExtractableTrait; use ToStringTrait; - /** - * @var string - */ - private $value; + private string $value; private function __construct( string $value diff --git a/src/InvalidTypeException.php b/src/InvalidTypeException.php index 2d02030..68f1cd6 100644 --- a/src/InvalidTypeException.php +++ b/src/InvalidTypeException.php @@ -19,8 +19,6 @@ final public function __construct( } /** - * @param string $expected - * @param mixed|array $value * @return \SmartEmailing\Types\InvalidTypeException */ public static function typeError( @@ -41,7 +39,6 @@ public static function typeError( /** * @param array $expected - * @param mixed|array $value * @return \SmartEmailing\Types\InvalidTypeException */ public static function typesError( @@ -107,7 +104,7 @@ private static function getDescription( $stringValue = StringHelpers::sanitize($stringValue); $description = ' (' . $stringValue . ')'; } elseif (\is_object($value)) { - $description = ' (' . \get_class($value) . ')'; + $description = ' (' . $value::class . ')'; } return $description; diff --git a/src/JsonString.php b/src/JsonString.php index 0adf273..d8e6a9c 100644 --- a/src/JsonString.php +++ b/src/JsonString.php @@ -28,7 +28,6 @@ private function __construct( } /** - * @param string|mixed|array $data * @return self * @throws \SmartEmailing\Types\InvalidTypeException */ @@ -56,8 +55,6 @@ public static function from( } /** - * @param mixed $value - * @param bool $oneLine * @return \SmartEmailing\Types\JsonString */ public static function encode( @@ -82,10 +79,7 @@ public function getValue(): string return $this->value; } - /** - * @return mixed|array - */ - public function getDecodedValue() + public function getDecodedValue(): mixed { return Json::decode($this->value, Json::FORCE_ARRAY); } diff --git a/src/PhoneNumber.php b/src/PhoneNumber.php index fd2db27..32591bb 100644 --- a/src/PhoneNumber.php +++ b/src/PhoneNumber.php @@ -35,9 +35,7 @@ public function guessCountry(): ?CountryCode \uasort( $input, - static function (int $a, int $b) { - return Strings::length((string) $b) <=> Strings::length((string) $a); - } + static fn (int $a, int $b): int => Strings::length((string) $b) <=> Strings::length((string) $a) ); $justNumbers = Strings::replace( diff --git a/src/PrimitiveTypes.php b/src/PrimitiveTypes.php index 62ded1a..57abe7f 100644 --- a/src/PrimitiveTypes.php +++ b/src/PrimitiveTypes.php @@ -21,11 +21,6 @@ final public static function getInt( throw InvalidTypeException::typeError('int', $value); } - /** - * @param mixed $value - * @param bool $nullIfInvalid - * @return int|null - */ final public static function getIntOrNull( mixed $value, bool $nullIfInvalid = false @@ -47,8 +42,6 @@ final public static function getIntOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @return int * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractInt( @@ -64,10 +57,6 @@ final public static function extractInt( } } - /** - * @param mixed $value - * @return float - */ final public static function getFloat( mixed $value ): float { @@ -87,11 +76,6 @@ final public static function getFloat( throw InvalidTypeException::typeError('float', $value); } - /** - * @param mixed $value - * @param bool $nullIfInvalid - * @return float|null - */ final public static function getFloatOrNull( mixed $value, bool $nullIfInvalid = false @@ -113,8 +97,6 @@ final public static function getFloatOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @return float */ final public static function extractFloat( array | \ArrayAccess $data, @@ -131,9 +113,6 @@ final public static function extractFloat( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @param bool $nullIfInvalid - * @return float|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractFloatOrNull( @@ -158,9 +137,6 @@ final public static function extractFloatOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @param bool $nullIfInvalid - * @return int|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractIntOrNull( @@ -185,9 +161,6 @@ final public static function extractIntOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @param bool $nullIfInvalid - * @return bool|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractBoolOrNull( @@ -212,9 +185,6 @@ final public static function extractBoolOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @param bool $nullIfInvalid - * @return string|null * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractStringOrNull( @@ -250,11 +220,6 @@ final public static function getString( throw InvalidTypeException::typeError('string', $value); } - /** - * @param mixed $value - * @param bool $nullIfInvalid - * @return string|null - */ final public static function getStringOrNull( mixed $value, bool $nullIfInvalid = false @@ -276,13 +241,11 @@ final public static function getStringOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @return string * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractString( array | \ArrayAccess $data, - string | int$key + string | int $key ): string { $value = ExtractableHelpers::extractValue($data, $key); @@ -315,11 +278,6 @@ final public static function getBool( throw InvalidTypeException::typeError('bool', $value); } - /** - * @param mixed $value - * @param bool $nullIfInvalid - * @return bool|null - */ final public static function getBoolOrNull( mixed $value, bool $nullIfInvalid = false @@ -341,8 +299,6 @@ final public static function getBoolOrNull( /** * @param array|\ArrayAccess $data - * @param string|int $key - * @return bool * @throws \SmartEmailing\Types\InvalidTypeException */ final public static function extractBool( diff --git a/src/ScalarLeavesArray.php b/src/ScalarLeavesArray.php index 6d067a5..c0c9e7f 100644 --- a/src/ScalarLeavesArray.php +++ b/src/ScalarLeavesArray.php @@ -32,8 +32,6 @@ public function __construct( /** * @param array $data - * @param string $key - * @return self */ public static function extractOrEmpty( array $data, diff --git a/src/UniqueArrayFeatures.php b/src/UniqueArrayFeatures.php index cd8dce6..cb490f3 100644 --- a/src/UniqueArrayFeatures.php +++ b/src/UniqueArrayFeatures.php @@ -14,8 +14,6 @@ final public static function empty(): self /** * @param array $data - * @param string $key - * @return self */ public static function extractOrEmpty( array $data, @@ -34,7 +32,6 @@ public static function extractOrEmpty( } /** - * @param int $chunkSize * @return array */ public function split( diff --git a/src/UniqueIntArray.php b/src/UniqueIntArray.php index 723cb87..49a9a12 100644 --- a/src/UniqueIntArray.php +++ b/src/UniqueIntArray.php @@ -40,7 +40,6 @@ private function __construct( /** * @param array $data - * @param string $key * @return \SmartEmailing\Types\UniqueIntArray */ public static function extractNotEmpty( @@ -61,7 +60,6 @@ public static function extractNotEmpty( /** * @param array<\SmartEmailing\Types\UniqueIntArray> $uniqueIntArrays - * @return \SmartEmailing\Types\UniqueIntArray */ public static function intersect( array $uniqueIntArrays @@ -88,7 +86,6 @@ public static function intersect( /** * @param array<\SmartEmailing\Types\UniqueIntArray> $uniqueIntArrays - * @return \SmartEmailing\Types\UniqueIntArray */ public static function union( array $uniqueIntArrays diff --git a/src/UrlType.php b/src/UrlType.php index d3f5359..d9ae81b 100644 --- a/src/UrlType.php +++ b/src/UrlType.php @@ -33,9 +33,7 @@ private function __construct( // urlencode non-ascii chars $value = (string) \preg_replace_callback( '/[^\x20-\x7f]/', - static function ($match) { - return \urlencode($match[0]); - }, + static fn ($match): string => \urlencode($match[0]), $value ); @@ -48,7 +46,7 @@ static function ($match) { try { $this->url = new Url($value); - } catch (InvalidArgumentException $e) { + } catch (InvalidArgumentException) { throw new InvalidTypeException('Invalid URL or missing protocol: ' . $value); } } @@ -90,7 +88,6 @@ public function getScheme(): string /** * @param array $names - * @return bool */ public function hasParameters( array $names @@ -116,8 +113,6 @@ public function getParameters(): array } /** - * @param string $name - * @param mixed|null $value * @return \SmartEmailing\Types\UrlType */ public function withQueryParameter( @@ -135,7 +130,6 @@ public function withQueryParameter( } /** - * @param \SmartEmailing\Types\Domain $host * @return $this * @deprecated use withHostName */ @@ -187,15 +181,10 @@ public function withPath( return $dolly; } - /** - * @param string $name - * @param mixed|null $default - * @return mixed - */ public function getQueryParameter( string $name, mixed $default = null - ) + ): mixed { return $this->url->getQueryParameter($name) ?? $default; } @@ -220,7 +209,6 @@ private function addSlashToPathOrFail( /** * @param array $urlParts - * @return string */ private function buildUrl( array $urlParts diff --git a/src/VatId.php b/src/VatId.php index bf88727..87d55c2 100644 --- a/src/VatId.php +++ b/src/VatId.php @@ -187,8 +187,6 @@ private static function getDivisible(): array } /** - * @param string $vatNumber - * @return bool * @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter.UnusedParameter */ private static function isValidForNonCountry( @@ -209,7 +207,6 @@ private static function preProcessVatId( } /** - * @param string $vatId * @return array */ private static function extractCountryAndPrefixAndNumber( diff --git a/tests/ArraysTest.phpt b/tests/ArraysTest.phpt index 530ddf1..42df4f0 100644 --- a/tests/ArraysTest.phpt +++ b/tests/ArraysTest.phpt @@ -4,9 +4,9 @@ declare(strict_types = 1); namespace SmartEmailing\Types; +use stdClass; use Tester\Assert; use Tester\TestCase; -use stdClass; require_once __DIR__ . '/bootstrap.php'; diff --git a/tests/DurationTest.phpt b/tests/DurationTest.phpt index 3907e75..1d72c97 100644 --- a/tests/DurationTest.phpt +++ b/tests/DurationTest.phpt @@ -4,9 +4,9 @@ declare(strict_types = 1); namespace SmartEmailing\Types; +use stdClass; use Tester\Assert; use Tester\TestCase; -use stdClass; require_once __DIR__ . '/bootstrap.php'; @@ -128,9 +128,9 @@ final class DurationTest extends TestCase public function testGetDateTimeModify(): void { foreach ($this->getTestDateTimeModifyData() as $data) { - /** @var \SmartEmailing\Types\Duration $duration */ - /** @var string $expectedDateTimeModify */ [$duration, $expectedDateTimeModify] = $data; + \assert($duration instanceof \SmartEmailing\Types\Duration); + \assert(\is_string($expectedDateTimeModify)); Assert::equal($expectedDateTimeModify, $duration->getDateTimeModify()); } @@ -139,9 +139,9 @@ final class DurationTest extends TestCase public function testToArray(): void { foreach ($this->getTestToArrayData() as $data) { - /** @var \SmartEmailing\Types\Duration $duration */ - /** @var array $expectedArray */ [$duration, $expectedArray] = $data; + \assert($duration instanceof \SmartEmailing\Types\Duration); + \assert(\is_array($expectedArray)); Assert::equal($expectedArray, $duration->toArray()); } diff --git a/tests/Helpers/ExtractableHelpersTest.phpt b/tests/Helpers/ExtractableHelpersTest.phpt index 90484ae..1bf8c27 100644 --- a/tests/Helpers/ExtractableHelpersTest.phpt +++ b/tests/Helpers/ExtractableHelpersTest.phpt @@ -25,13 +25,13 @@ final class ExtractableHelpersTest extends TestCase Assert::exception( static fn () => ExtractableHelpers::extractValue($array, 'b'), InvalidTypeException::class, - 'Missing key: b', + 'Missing key: b' ); Assert::exception( static fn () => ExtractableHelpers::extractValue($array, '2'), InvalidTypeException::class, - 'Missing key: 2', + 'Missing key: 2' ); } @@ -46,13 +46,13 @@ final class ExtractableHelpersTest extends TestCase Assert::exception( static fn () => ExtractableHelpers::extractValue($arrayObject, 'b'), InvalidTypeException::class, - 'Missing key: b', + 'Missing key: b' ); Assert::exception( static fn () => ExtractableHelpers::extractValue($arrayObject, '2'), InvalidTypeException::class, - 'Missing key: 2', + 'Missing key: 2' ); } diff --git a/tests/VatIdTest.phpt b/tests/VatIdTest.phpt index 154b75d..afbe15c 100644 --- a/tests/VatIdTest.phpt +++ b/tests/VatIdTest.phpt @@ -26,7 +26,6 @@ final class VatIdTest extends TestCase public function testIsValid(): void { - /** @var string $vatId */ foreach ($this->getValidVatIds() as $vatId) { Assert::true(VatId::isValid($vatId)); } @@ -34,7 +33,6 @@ final class VatIdTest extends TestCase public function testIsInvalid(): void { - /** @var string $vatId */ foreach ($this->getInvalidVatIds() as $vatId) { Assert::false(VatId::isValid($vatId)); } diff --git a/tools/cs/ruleset.xml b/tools/cs/ruleset.xml index 3b59bfe..6a51cd6 100644 --- a/tools/cs/ruleset.xml +++ b/tools/cs/ruleset.xml @@ -1,38 +1,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + @@ -41,7 +12,6 @@ - @@ -58,23 +28,15 @@ + + - - - - - - - - - - - - - - + + + + @@ -122,7 +84,5 @@ - app/config/environment.php tests/bootstrap.php - libs/SE20/MTA/Messages/CustomNetteMail/* From 172f0844d373c313b4ba737affa69fefe2c2c319 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Slischka?= Date: Thu, 6 May 2021 18:29:30 +0200 Subject: [PATCH 5/7] cs --- src/Duration.php | 3 +- .../ArrayExtractableTrait.php | 3 +- .../EnumExtractableTrait.php | 3 +- src/ExtractableTraits/ExtractableTrait.php | 24 +++++--- .../FloatExtractableTrait.php | 3 +- src/ExtractableTraits/IntExtractableTrait.php | 3 +- .../StringExtractableTrait.php | 3 +- src/JsonString.php | 3 +- tests/DurationTest.phpt | 60 +++++++++++-------- 9 files changed, 65 insertions(+), 40 deletions(-) diff --git a/src/Duration.php b/src/Duration.php index 2a27bd2..dbbfa9b 100644 --- a/src/Duration.php +++ b/src/Duration.php @@ -34,7 +34,8 @@ private function __construct( } public static function from( - mixed $data + mixed $data, + mixed ...$params ): Duration { if ($data instanceof self) { return $data; diff --git a/src/ExtractableTraits/ArrayExtractableTrait.php b/src/ExtractableTraits/ArrayExtractableTrait.php index c1ce799..5cad97c 100644 --- a/src/ExtractableTraits/ArrayExtractableTrait.php +++ b/src/ExtractableTraits/ArrayExtractableTrait.php @@ -19,7 +19,8 @@ abstract public function __construct( ); final public static function from( - mixed $data + mixed $data, + mixed ...$params ): self { if ($data instanceof self) { return $data; diff --git a/src/ExtractableTraits/EnumExtractableTrait.php b/src/ExtractableTraits/EnumExtractableTrait.php index 5fbd629..5dc2a41 100644 --- a/src/ExtractableTraits/EnumExtractableTrait.php +++ b/src/ExtractableTraits/EnumExtractableTrait.php @@ -23,7 +23,8 @@ abstract public static function get( * @return static */ final public static function from( - mixed $data + mixed $data, + mixed ...$params ): static { if ($data instanceof self) { return $data; diff --git a/src/ExtractableTraits/ExtractableTrait.php b/src/ExtractableTraits/ExtractableTrait.php index 2f4225a..8d52102 100644 --- a/src/ExtractableTraits/ExtractableTrait.php +++ b/src/ExtractableTraits/ExtractableTrait.php @@ -13,7 +13,8 @@ trait ExtractableTrait { abstract public static function from( - mixed $data + mixed $data, + mixed ...$params ): self; /** @@ -23,7 +24,8 @@ abstract public static function from( */ public static function extract( array | \ArrayAccess $data, - string | int $key + string | int $key, + mixed ...$params ): static { $value = ExtractableHelpers::extractValue($data, $key); @@ -32,7 +34,7 @@ public static function extract( } try { - return self::from($value); + return self::from($value, ...$params); } catch (InvalidTypeException $e) { throw $e->wrap($key); } @@ -43,7 +45,8 @@ public static function extract( */ public static function fromOrNull( mixed $value, - bool $getNullIfInvalid = false + bool $getNullIfInvalid = false, + mixed ...$params ): self | null { if ($value === null) { @@ -51,7 +54,7 @@ public static function fromOrNull( } try { - return self::from($value); + return self::from($value, ...$params); } catch (InvalidTypeException $e) { if ($getNullIfInvalid) { return null; @@ -68,7 +71,8 @@ public static function fromOrNull( public static function extractOrNull( array | \ArrayAccess $data, string | int $key, - bool $nullIfInvalid = false + bool $nullIfInvalid = false, + mixed ...$params ): self | null { if (!\is_array($data)) { @@ -86,7 +90,8 @@ public static function extractOrNull( return self::tryToExtract( $data, $key, - $nullIfInvalid + $nullIfInvalid, + ...$params ); } @@ -194,11 +199,12 @@ public static function extractArrayOfSkipInvalid( private static function tryToExtract( mixed $data, string | int $key, - bool $nullIfInvalid + bool $nullIfInvalid, + mixed ...$params ): self | null { try { - return self::extract($data, $key); + return self::extract($data, $key, ...$params); } catch (InvalidTypeException $e) { if ($nullIfInvalid) { return null; diff --git a/src/ExtractableTraits/FloatExtractableTrait.php b/src/ExtractableTraits/FloatExtractableTrait.php index 19a78d0..8a70779 100644 --- a/src/ExtractableTraits/FloatExtractableTrait.php +++ b/src/ExtractableTraits/FloatExtractableTrait.php @@ -16,7 +16,8 @@ abstract public function __construct( ); final public static function from( - mixed $data + mixed $data, + mixed ...$params ): self { if ($data instanceof self) { return $data; diff --git a/src/ExtractableTraits/IntExtractableTrait.php b/src/ExtractableTraits/IntExtractableTrait.php index 9240496..fdf7558 100644 --- a/src/ExtractableTraits/IntExtractableTrait.php +++ b/src/ExtractableTraits/IntExtractableTrait.php @@ -16,7 +16,8 @@ abstract public function __construct( ); final public static function from( - mixed $data + mixed $data, + mixed ...$params ): self { if ($data instanceof self) { return $data; diff --git a/src/ExtractableTraits/StringExtractableTrait.php b/src/ExtractableTraits/StringExtractableTrait.php index d82607b..48e0789 100644 --- a/src/ExtractableTraits/StringExtractableTrait.php +++ b/src/ExtractableTraits/StringExtractableTrait.php @@ -16,7 +16,8 @@ abstract public function __construct( ); final public static function from( - mixed $data + mixed $data, + mixed ...$params ): self { if ($data instanceof self) { return $data; diff --git a/src/JsonString.php b/src/JsonString.php index d8e6a9c..7776bdd 100644 --- a/src/JsonString.php +++ b/src/JsonString.php @@ -32,7 +32,8 @@ private function __construct( * @throws \SmartEmailing\Types\InvalidTypeException */ public static function from( - mixed $data + mixed $data, + mixed ...$params ): JsonString { if ($data instanceof self) { diff --git a/tests/DurationTest.phpt b/tests/DurationTest.phpt index 1d72c97..0606ec6 100644 --- a/tests/DurationTest.phpt +++ b/tests/DurationTest.phpt @@ -24,10 +24,12 @@ final class DurationTest extends TestCase Assert::throws( static function (): void { - Duration::from([ - 'value' => 0, - 'unit' => 'week', - ]); + Duration::from( + [ + 'value' => 0, + 'unit' => 'week', + ] + ); }, InvalidTypeException::class ); @@ -66,10 +68,12 @@ final class DurationTest extends TestCase public function testCreate(): void { - Duration::from([ - 'value' => 1, - 'unit' => TimeUnit::HOURS, - ]); + Duration::from( + [ + 'value' => 1, + 'unit' => TimeUnit::HOURS, + ] + ); Duration::extract([ 'duration' => [ @@ -87,10 +91,12 @@ final class DurationTest extends TestCase public function testGetUnit(): void { - $duration = Duration::from([ - 'value' => 1, - 'unit' => TimeUnit::YEARS, - ]); + $duration = Duration::from( + [ + 'value' => 1, + 'unit' => TimeUnit::YEARS, + ] + ); Assert::type(Duration::class, $duration); Assert::type(TimeUnit::class, $duration->getUnit()); @@ -98,10 +104,12 @@ final class DurationTest extends TestCase public function testGetValue(): void { - $duration = Duration::from([ - 'value' => 1, - 'unit' => TimeUnit::DAYS, - ]); + $duration = Duration::from( + [ + 'value' => 1, + 'unit' => TimeUnit::DAYS, + ] + ); Assert::type(Duration::class, $duration); Assert::type('int', $duration->getValue()); @@ -110,17 +118,21 @@ final class DurationTest extends TestCase public function testLengthInSeconds(): void { - $duration = Duration::from([ - 'value' => 3, - 'unit' => TimeUnit::HOURS, - ]); + $duration = Duration::from( + [ + 'value' => 3, + 'unit' => TimeUnit::HOURS, + ] + ); Assert::type(Duration::class, $duration); Assert::equal(10800, $duration->getLengthInSeconds()); - $duration = Duration::from([ - 'value' => 10, - 'unit' => TimeUnit::MINUTES, - ]); + $duration = Duration::from( + [ + 'value' => 10, + 'unit' => TimeUnit::MINUTES, + ] + ); Assert::type(Duration::class, $duration); Assert::equal(600, $duration->getLengthInSeconds()); } From fc4671ac1492a02bc806ad3446175dd295b1db80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Slischka?= Date: Thu, 6 May 2021 18:33:02 +0200 Subject: [PATCH 6/7] Context validation proposal --- src/Address.php | 6 ++--- .../StringExtractableTrait.php | 2 +- src/ZipCode.php | 26 ++++++++++++++++--- tests/ZipCodeTest.phpt | 14 ++++++++++ tools/cs/ruleset.xml | 4 +++ 5 files changed, 44 insertions(+), 8 deletions(-) diff --git a/src/Address.php b/src/Address.php index bdff811..7562d81 100644 --- a/src/Address.php +++ b/src/Address.php @@ -25,10 +25,10 @@ final class Address private function __construct( array $data ) { - $this->streetAndNumber = PrimitiveTypes::extractString($data, 'street_and_number'); - $this->town = PrimitiveTypes::extractString($data, 'town'); - $this->zipCode = ZipCode::extract($data, 'zip_code'); + $this->streetAndNumber = (string) NonEmptyString::extract($data, 'street_and_number'); + $this->town = (string) NonEmptyString::extract($data, 'town'); $this->country = CountryCode::extract($data, 'country'); + $this->zipCode = ZipCode::extract($data, 'zip_code', countryCode: $this->country); } /** diff --git a/src/ExtractableTraits/StringExtractableTrait.php b/src/ExtractableTraits/StringExtractableTrait.php index 48e0789..0dc5f07 100644 --- a/src/ExtractableTraits/StringExtractableTrait.php +++ b/src/ExtractableTraits/StringExtractableTrait.php @@ -25,7 +25,7 @@ final public static function from( $data = PrimitiveTypes::getString($data); - return new static($data); + return new static($data, ...$params); } } diff --git a/src/ZipCode.php b/src/ZipCode.php index f15b5ff..3187c2f 100644 --- a/src/ZipCode.php +++ b/src/ZipCode.php @@ -45,12 +45,13 @@ final class ZipCode implements ToStringInterface ]; private function __construct( - string $value + string $value, + ?CountryCode $countryCode = null ) { $value = StringHelpers::removeWhitespace($value); $value = Strings::upper($value); - if (!$this->isValid($value)) { + if (!$this->isValid($value, $countryCode)) { throw new InvalidTypeException('Invalid ZIP code: ' . $value); } @@ -63,10 +64,19 @@ public function getValue(): string } private function isValid( - string $value + string $value, + ?CountryCode $countryCode ): bool { + if ($countryCode !== null) { + $pattern = self::$patternsByCountry[(string) $countryCode] ?? null; + + if ($pattern !== null) { + return $this->validate($value, $pattern); + } + } + foreach (self::$patternsByCountry as $pattern) { - if (Strings::match($value, $pattern)) { + if ($this->validate($value, $pattern)) { return true; } } @@ -74,4 +84,12 @@ private function isValid( return false; } + private function validate( + string $value, + string $pattern + ): bool + { + return Strings::match($value, $pattern) !== null; + } + } diff --git a/tests/ZipCodeTest.phpt b/tests/ZipCodeTest.phpt index 7850b2b..eb7ad74 100644 --- a/tests/ZipCodeTest.phpt +++ b/tests/ZipCodeTest.phpt @@ -43,9 +43,23 @@ final class ZipCodeTest extends TestCase Assert::equal($validValue, $zip->getValue()); } + Assert::equal('39174', ZipCode::extract($validValues, 0, countryCode: CountryCode::from(CountryCode::CZ))->getValue()); + + Assert::exception( + static fn () => ZipCode::extract($validValues, 0, countryCode: CountryCode::from(CountryCode::GB)), + InvalidTypeException::class + ); + Assert::equal('WC2N5DU', ZipCode::from('WC2N 5DU')->getValue()); Assert::equal('W22LW', ZipCode::from('w2 2lw')->getValue()); + + Assert::equal('WC2N5DU', ZipCode::from('WC2N 5DU', countryCode: CountryCode::from(CountryCode::GB))->getValue()); + + Assert::exception( + static fn () => ZipCode::from('WC2N 5DU', countryCode: CountryCode::from(CountryCode::SK)), + InvalidTypeException::class + ); } } diff --git a/tools/cs/ruleset.xml b/tools/cs/ruleset.xml index 6a51cd6..fe8dbbf 100644 --- a/tools/cs/ruleset.xml +++ b/tools/cs/ruleset.xml @@ -37,6 +37,10 @@ + + + + From 6883b11bb670046b03bee0ed291589af2654a875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Slischka?= Date: Thu, 6 May 2021 18:40:30 +0200 Subject: [PATCH 7/7] Better API more code --- src/ZipCode.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ZipCode.php b/src/ZipCode.php index 3187c2f..652ed73 100644 --- a/src/ZipCode.php +++ b/src/ZipCode.php @@ -12,7 +12,9 @@ final class ZipCode implements ToStringInterface { - use StringExtractableTrait; + use StringExtractableTrait { + extract as traitExtract; + } use ToStringTrait; private string $value; @@ -58,6 +60,21 @@ private function __construct( $this->value = $value; } + /** + * @param \ArrayAccess|array $data + * @param int|string $key + * @param \SmartEmailing\Types\CountryCode|null $countryCode + * @return self + */ + public static function extract( + \ArrayAccess|array $data, + int|string $key, + ?CountryCode $countryCode = null + ): self + { + return self::traitextract($data, $key, $countryCode); + } + public function getValue(): string { return $this->value;