Skip to content

Commit 88ebc74

Browse files
committed
Refactor hasFormattingPatternForNumber to only call chooseFormattingPatternForNumber once
Mirrors google/libphonenumber#3976
1 parent ef1e41c commit 88ebc74

1 file changed

Lines changed: 9 additions & 10 deletions

File tree

src/PhoneNumberUtil.php

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2687,7 +2687,9 @@ public function isNANPACountry(string $regionCode): bool
26872687
*/
26882688
public function formatInOriginalFormat(PhoneNumber $number, string $regionCallingFrom): string
26892689
{
2690-
if ($number->hasRawInput() && !$this->hasFormattingPatternForNumber($number)) {
2690+
$formatRule = $this->getFormattingPatternForNumber($number);
2691+
2692+
if ($number->hasRawInput() && $formatRule === null) {
26912693
// We check if we have the formatting pattern because without that, we might format the number
26922694
// as a group without national prefix.
26932695
return $number->getRawInput();
@@ -2731,11 +2733,6 @@ public function formatInOriginalFormat(PhoneNumber $number, string $regionCallin
27312733
$formattedNumber = $nationalFormat;
27322734
break;
27332735
}
2734-
// Metadata cannot be null here because getNddPrefixForRegion() (above) returns null if
2735-
// there is no metadata for the region.
2736-
$metadata = $this->getMetadataForRegion($regionCode);
2737-
$nationalNumber = $this->getNationalSignificantNumber($number);
2738-
$formatRule = $this->chooseFormattingPatternForNumber($metadata->numberFormats(), $nationalNumber);
27392736
// The format rule could still be null here if the national number was 0 and there was no
27402737
// raw input (this should not be possible for numbers generated by the phonenumber library
27412738
// as they would also not have a country calling code and we would have exited earlier).
@@ -2782,17 +2779,19 @@ public function formatInOriginalFormat(PhoneNumber $number, string $regionCallin
27822779
return $formattedNumber;
27832780
}
27842781

2785-
protected function hasFormattingPatternForNumber(PhoneNumber $number): bool
2782+
/**
2783+
* Called chooseFormattingPatternForNumber in libphonenumber
2784+
*/
2785+
protected function getFormattingPatternForNumber(PhoneNumber $number): ?NumberFormat
27862786
{
27872787
$countryCallingCode = $number->getCountryCode();
27882788
$phoneNumberRegion = $this->getRegionCodeForCountryCode($countryCallingCode);
27892789
$metadata = $this->getMetadataForRegionOrCallingCode($countryCallingCode, $phoneNumberRegion);
27902790
if ($metadata === null) {
2791-
return false;
2791+
return null;
27922792
}
27932793
$nationalNumber = $this->getNationalSignificantNumber($number);
2794-
$formatRule = $this->chooseFormattingPatternForNumber($metadata->numberFormats(), $nationalNumber);
2795-
return $formatRule !== null;
2794+
return $this->chooseFormattingPatternForNumber($metadata->numberFormats(), $nationalNumber);
27962795
}
27972796

27982797
/**

0 commit comments

Comments
 (0)