Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop PHP7.4 & rework CI #160

Merged
merged 1 commit into from
Nov 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/static.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,4 @@ jobs:
composer-options: "--working-dir=tools/php-cs-fixer"

- name: PHP-CS-Fixer
run: tools/php-cs-fixer/vendor/bin/php-cs-fixer fix --dry-run --diff --config=.php_cs.dist.php
run: tools/php-cs-fixer/vendor/bin/php-cs-fixer fix --dry-run --diff --config=.php-cs-fixer.php
31 changes: 21 additions & 10 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,24 @@ jobs:
strategy:
matrix:
include:
- php: '8.0'
# Lowest Deps
- php: 8.0
symfony-require: 5.4.*
- php: '8.0'
symfony-require: 6.3.*
- php: '8.2'
composer-flags: '--prefer-stable --prefer-lowest'
# LTS with latest stable PHP
- php: 8.2
symfony-require: 6.4.*
composer-flags: '--prefer-stable'
# Active release
- php: 8.3
symfony-require: 7.0.*
composer-flags: '--prefer-stable --ignore-platform-req=php+'
# Development release
- php: nightly
symfony-require: 7.1.*@dev
composer-flags: '--ignore-platform-req=php+'
stability: dev
- php: '8.1'
can-fail: true
fail-fast: false

steps:
Expand All @@ -30,7 +40,8 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "${{ matrix.php }}"
php-version: ${{ matrix.php }}
extensions: intl-74.1
coverage: none

- name: Configure Composer minimum stability
Expand All @@ -39,8 +50,8 @@ jobs:

- name: Install dependencies
env:
SYMFONY_REQUIRE: "${{ matrix.symfony-require }}"
run: composer update --prefer-dist
SYMFONY_REQUIRE: ${{ matrix.symfony-require }}
run: composer update ${{ matrix.composer-flags }} --no-interaction --no-progress --optimize-autoloader

- name: "Run PHPUnit"
run: "vendor/bin/phpunit"
- name: Run PHPUnit
run: vendor/bin/phpunit
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
/.phpunit.result.cache
/composer.lock
/composer.phar
/phpunit.xml
/tools/*/composer.lock
/tools/*/vendor
/vendor/
File renamed without changes.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]

### Changed

- Remove support of Symfony 4.x, 5.3 & < 6.3
- Add support for Symfony 7
- Remove support of PHP 7.4

## [3.9.3] - 2023-11-29

Expand Down
8 changes: 4 additions & 4 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,18 @@
"sort-packages": true
},
"require": {
"php": ">=7.4",
"giggsey/libphonenumber-for-php": "^8.0",
"php": ">=8.0",
"giggsey/libphonenumber-for-php": "^8.9",
"symfony/framework-bundle": "^5.4 || ^6.3 || ^7.0",
"symfony/intl": "^5.4 || ^6.3 || ^7.0",
"symfony/polyfill-mbstring": "^1.28"
},
"require-dev": {
"doctrine/doctrine-bundle": "^1.12|^2.0",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"phpunit/phpunit": "^9.6.11",
"symfony/form": "^5.4 || ^6.3 || ^7.0",
"symfony/phpunit-bridge": "^6.3 || ^7.0",
"symfony/phpunit-bridge": "^7.0",
"symfony/property-access": "^5.4 || ^6.3 || ^7.0",
"symfony/serializer": "^5.4 || ^6.3 || ^7.0",
"symfony/twig-bundle": "^5.4 || ^6.3 || ^7.0",
Expand Down
File renamed without changes.
31 changes: 31 additions & 0 deletions phpunit.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="./vendor/autoload.php"
colors="true"
verbose="true">

<php>
<ini name="display_errors" value="1" />
<ini name="error_reporting" value="-1" />
<env name="SHELL_VERBOSITY" value="-1"/>
<server name="SYMFONY_DEPRECATIONS_HELPER" value="max[total]=67&amp;max[self]=3" />
</php>

<testsuites>
<testsuite name="MisdPhoneNumberBundle Test Suite">
<directory>tests</directory>
</testsuite>
</testsuites>

<coverage>
<include>
<directory>src</directory>
</include>
</coverage>

<listeners>
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener"/>
</listeners>
</phpunit>
20 changes: 0 additions & 20 deletions phpunit.xml.dist

This file was deleted.

10 changes: 4 additions & 6 deletions src/Doctrine/DBAL/Types/PhoneNumberType.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ public function getName(): string
return self::NAME;
}

public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
public function getSQLDeclaration(array $column, AbstractPlatform $platform): string
{
// DBAL < 4
if (method_exists(AbstractPlatform::class, 'getVarcharTypeDeclarationSQL')) {
return $platform->getVarcharTypeDeclarationSQL(['length' => $fieldDeclaration['length'] ?? 35]);
return $platform->getVarcharTypeDeclarationSQL(['length' => $column['length'] ?? 35]);
}

// DBAL 4
return $platform->getStringTypeDeclarationSQL(['length' => $fieldDeclaration['length'] ?? 35]);
return $platform->getStringTypeDeclarationSQL(['length' => $column['length'] ?? 35]);
}

public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string
Expand All @@ -56,9 +56,7 @@ public function convertToDatabaseValue($value, AbstractPlatform $platform): ?str
throw new ConversionException('Expected \libphonenumber\PhoneNumber, got '.\gettype($value));
}

$util = PhoneNumberUtil::getInstance();

return $util->format($value, PhoneNumberFormat::E164);
return PhoneNumberUtil::getInstance()->format($value, PhoneNumberFormat::E164);
}

public function convertToPHPValue($value, AbstractPlatform $platform): ?PhoneNumber
Expand Down
16 changes: 9 additions & 7 deletions src/Form/DataTransformer/PhoneNumberToArrayTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,23 +36,25 @@ public function __construct(array $countryChoices)
$this->countryChoices = $countryChoices;
}

public function transform($phoneNumber): array
public function transform($value): array
{
if (null === $phoneNumber) {
if (null === $value) {
return ['country' => '', 'number' => ''];
} elseif (false === $phoneNumber instanceof PhoneNumber) {
}

if (false === $value instanceof PhoneNumber) {
throw new TransformationFailedException('Expected a \libphonenumber\PhoneNumber.');
}

$util = PhoneNumberUtil::getInstance();

if (false === \in_array($util->getRegionCodeForNumber($phoneNumber), $this->countryChoices)) {
if (false === \in_array($util->getRegionCodeForNumber($value), $this->countryChoices)) {
throw new TransformationFailedException('Invalid country.');
}

return [
'country' => $util->getRegionCodeForNumber($phoneNumber),
'number' => $util->format($phoneNumber, PhoneNumberFormat::NATIONAL),
'country' => $util->getRegionCodeForNumber($value),
'number' => $util->format($value, PhoneNumberFormat::NATIONAL),
];
}

Expand All @@ -78,7 +80,7 @@ public function reverseTransform($value): ?PhoneNumber
throw new TransformationFailedException($e->getMessage(), $e->getCode(), $e);
}

if (false === \in_array($util->getRegionCodeForNumber($phoneNumber), $this->countryChoices)) {
if (null !== $phoneNumber && false === \in_array($util->getRegionCodeForNumber($phoneNumber), $this->countryChoices)) {
throw new TransformationFailedException('Invalid country.');
}

Expand Down
20 changes: 10 additions & 10 deletions src/Form/DataTransformer/PhoneNumberToStringTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,33 +51,33 @@ public function __construct(
$this->format = $format;
}

public function transform($phoneNumber): string
public function transform($value): string
{
if (null === $phoneNumber) {
if (null === $value) {
return '';
} elseif (false === $phoneNumber instanceof PhoneNumber) {
}

if (false === $value instanceof PhoneNumber) {
throw new TransformationFailedException('Expected a \libphonenumber\PhoneNumber.');
}

$util = PhoneNumberUtil::getInstance();

if (PhoneNumberFormat::NATIONAL === $this->format) {
return $util->formatOutOfCountryCallingNumber($phoneNumber, $this->defaultRegion);
return $util->formatOutOfCountryCallingNumber($value, $this->defaultRegion);
}

return $util->format($phoneNumber, $this->format);
return $util->format($value, $this->format);
}

public function reverseTransform($string): ?PhoneNumber
public function reverseTransform($value): ?PhoneNumber
{
if (!$string && '0' !== $string) {
if (!$value && '0' !== $value) {
return null;
}

$util = PhoneNumberUtil::getInstance();

try {
return $util->parse($string, $this->defaultRegion);
return PhoneNumberUtil::getInstance()->parse($value, $this->defaultRegion);
} catch (NumberParseException $e) {
throw new TransformationFailedException($e->getMessage(), $e->getCode(), $e);
}
Expand Down
2 changes: 1 addition & 1 deletion src/Serializer/Normalizer/PhoneNumberNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public function supportsNormalization($data, $format = null, array $context = []
/**
* @throws UnexpectedValueException
*/
public function denormalize($data, $class, $format = null, array $context = []): ?PhoneNumber
public function denormalize($data, $type, $format = null, array $context = []): ?PhoneNumber
{
if (null === $data) {
return null;
Expand Down
21 changes: 2 additions & 19 deletions src/Templating/Helper/PhoneNumberHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,7 @@ public function __construct(PhoneNumberUtil $phoneNumberUtil)
$this->phoneNumberUtil = $phoneNumberUtil;
}

/**
* Format a phone number.
*
* @param PhoneNumber|string $phoneNumber phone number
* @param int|string $format format, or format constant name
*
* @return string formatted phone number
*
* @throws InvalidArgumentException if an argument is invalid
*/
public function format($phoneNumber, $format = PhoneNumberFormat::INTERNATIONAL): string
public function format(PhoneNumber|string $phoneNumber, string|int $format = PhoneNumberFormat::INTERNATIONAL): string
{
$phoneNumber = $this->getPhoneNumber($phoneNumber);

Expand Down Expand Up @@ -102,14 +92,7 @@ public function isType($phoneNumber, $type = PhoneNumberType::UNKNOWN): bool
return $this->phoneNumberUtil->getNumberType($phoneNumber) === $type;
}

/**
* @param PhoneNumber|string $phoneNumber
*
* @return PhoneNumber|void
*
* @throws \libphonenumber\NumberParseException
*/
private function getPhoneNumber($phoneNumber)
private function getPhoneNumber(PhoneNumber|string $phoneNumber): PhoneNumber
{
if (\is_string($phoneNumber)) {
$phoneNumber = $this->phoneNumberUtil->parse($phoneNumber);
Expand Down
13 changes: 9 additions & 4 deletions src/Validator/Constraints/PhoneNumberValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
use libphonenumber\PhoneNumberFormat;
use libphonenumber\PhoneNumberType;
use libphonenumber\PhoneNumberUtil;
use Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber as PhoneNumberConstraint;
use Symfony\Component\PropertyAccess\Exception\NoSuchPropertyException;
use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
Expand Down Expand Up @@ -59,6 +60,10 @@ public function __construct(PhoneNumberUtil $phoneUtil = null, string $defaultRe

public function validate($value, Constraint $constraint): void
{
if (!$constraint instanceof PhoneNumberConstraint) {
return;
}

if (null === $value || '' === $value) {
return;
}
Expand Down Expand Up @@ -137,7 +142,7 @@ public function validate($value, Constraint $constraint): void
}
}

private function getRegion(Constraint $constraint): ?string
private function getRegion(PhoneNumberConstraint $constraint): ?string
{
$defaultRegion = null;
if (null !== $path = $constraint->regionPath) {
Expand Down Expand Up @@ -176,10 +181,10 @@ private function getPropertyAccessor(): PropertyAccessorInterface
/**
* Add a violation.
*
* @param mixed $value the value that should be validated
* @param Constraint $constraint the constraint for the validation
* @param mixed $value the value that should be validated
* @param PhoneNumberConstraint $constraint the constraint for the validation
*/
private function addViolation($value, Constraint $constraint): void
private function addViolation($value, PhoneNumberConstraint $constraint): void
{
$this->context->buildViolation($constraint->getMessage())
->setParameter('{{ types }}', implode(', ', $constraint->getTypeNames()))
Expand Down
9 changes: 0 additions & 9 deletions tests/Templating/Helper/PhoneNumberHelperTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,15 +89,6 @@ public function testFormatAcceptString()
$this->assertEquals('+371 22 222 222', $result);
}

public function testFormatAcceptNotAllowValue()
{
$phoneNumberUtil = PhoneNumberUtil::getInstance();
$helper = new PhoneNumberHelper($phoneNumberUtil);
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('The phone number supplied is not PhoneNumber or string.');
$helper->format(0037122222222);
}

public function formatOutOfCountryCallingNumberAcceptString()
{
$phoneNumberUtil = PhoneNumberUtil::getInstance();
Expand Down