Skip to content

Commit 8a4bd23

Browse files
minor #474 Add Mbstring::assertEncoding() (zonuexe)
This PR was merged into the 1.x branch. Discussion ---------- Add Mbstring::assertEncoding() The same pattern of encoding checks is required in another method, so you can separate encoding assertions and avoid copy-pasting. refs https://github.com/symfony/polyfill/pull/466/files#r1545573878 Cc: `@Ayesh` Commits ------- f5abc49 Add Mbstring::assertEncoding()
2 parents e85ab80 + f5abc49 commit 8a4bd23

File tree

1 file changed

+20
-32
lines changed

1 file changed

+20
-32
lines changed

src/Mbstring/Mbstring.php

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -837,17 +837,8 @@ public static function mb_str_pad(string $string, int $length, string $pad_strin
837837

838838
if (null === $encoding) {
839839
$encoding = self::mb_internal_encoding();
840-
}
841-
842-
try {
843-
$validEncoding = @self::mb_check_encoding('', $encoding);
844-
} catch (\ValueError $e) {
845-
throw new \ValueError(sprintf('mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given', $encoding));
846-
}
847-
848-
// BC for PHP 7.3 and lower
849-
if (!$validEncoding) {
850-
throw new \ValueError(sprintf('mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given', $encoding));
840+
} else {
841+
self::assertEncoding($encoding, 'mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given');
851842
}
852843

853844
if (self::mb_strlen($pad_string, $encoding) <= 0) {
@@ -877,17 +868,8 @@ public static function mb_ucfirst(string $string, ?string $encoding = null): str
877868
{
878869
if (null === $encoding) {
879870
$encoding = self::mb_internal_encoding();
880-
}
881-
882-
try {
883-
$validEncoding = @self::mb_check_encoding('', $encoding);
884-
} catch (\ValueError $e) {
885-
throw new \ValueError(sprintf('mb_ucfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given', $encoding));
886-
}
887-
888-
// BC for PHP 7.3 and lower
889-
if (!$validEncoding) {
890-
throw new \ValueError(sprintf('mb_ucfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given', $encoding));
871+
} else {
872+
self::assertEncoding($encoding, 'mb_ucfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given');
891873
}
892874

893875
$firstChar = mb_substr($string, 0, 1, $encoding);
@@ -900,18 +882,10 @@ public static function mb_lcfirst(string $string, ?string $encoding = null): str
900882
{
901883
if (null === $encoding) {
902884
$encoding = self::mb_internal_encoding();
885+
} else {
886+
self::assertEncoding($encoding, 'mb_lcfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given');
903887
}
904888

905-
try {
906-
$validEncoding = @self::mb_check_encoding('', $encoding);
907-
} catch (\ValueError $e) {
908-
throw new \ValueError(sprintf('mb_lcfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given', $encoding));
909-
}
910-
911-
// BC for PHP 7.3 and lower
912-
if (!$validEncoding) {
913-
throw new \ValueError(sprintf('mb_lcfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given', $encoding));
914-
}
915889
$firstChar = mb_substr($string, 0, 1, $encoding);
916890
$firstChar = mb_convert_case($firstChar, MB_CASE_LOWER, $encoding);
917891

@@ -991,4 +965,18 @@ private static function getEncoding($encoding)
991965

992966
return $encoding;
993967
}
968+
969+
private static function assertEncoding(string $encoding, string $errorFormat): void
970+
{
971+
try {
972+
$validEncoding = @self::mb_check_encoding('', $encoding);
973+
} catch (\ValueError $e) {
974+
throw new \ValueError(\sprintf($errorFormat, $encoding));
975+
}
976+
977+
// BC for PHP 7.3 and lower
978+
if (!$validEncoding) {
979+
throw new \ValueError(\sprintf($errorFormat, $encoding));
980+
}
981+
}
994982
}

0 commit comments

Comments
 (0)