From 50ca944278c9d7bc6e0c69ab66ab0e9a993e426b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Ostroluck=C3=BD?= Date: Sun, 19 Feb 2017 23:03:20 +0100 Subject: [PATCH] [Serializer] Reduce complexity of NameConverter Cleaner and faster implementation of camelcase normalization. Speed improvement is particularly visible in long string input. --- .../CamelCaseToSnakeCaseNameConverter.php | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php b/src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php index 861c37b349..b6c6284093 100644 --- a/src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php +++ b/src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php @@ -44,19 +44,7 @@ class CamelCaseToSnakeCaseNameConverter implements NameConverterInterface public function normalize($propertyName) { if (null === $this->attributes || in_array($propertyName, $this->attributes)) { - $lcPropertyName = lcfirst($propertyName); - $snakeCasedName = ''; - - $len = strlen($lcPropertyName); - for ($i = 0; $i < $len; ++$i) { - if (ctype_upper($lcPropertyName[$i])) { - $snakeCasedName .= '_'.strtolower($lcPropertyName[$i]); - } else { - $snakeCasedName .= strtolower($lcPropertyName[$i]); - } - } - - return $snakeCasedName; + return strtolower(preg_replace('/[A-Z]/', '_\\0', lcfirst($propertyName))); } return $propertyName;