CamelCaseToSnakeCaseNameConverter.php in Zircon Profile 8.0
File
vendor/symfony/serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php
View source
<?php
namespace Symfony\Component\Serializer\NameConverter;
class CamelCaseToSnakeCaseNameConverter implements NameConverterInterface {
private $attributes;
private $lowerCamelCase;
public function __construct(array $attributes = null, $lowerCamelCase = true) {
$this->attributes = $attributes;
$this->lowerCamelCase = $lowerCamelCase;
}
public function normalize($propertyName) {
if (null === $this->attributes || in_array($propertyName, $this->attributes)) {
$snakeCasedName = '';
$len = strlen($propertyName);
for ($i = 0; $i < $len; ++$i) {
if (ctype_upper($propertyName[$i])) {
$snakeCasedName .= '_' . strtolower($propertyName[$i]);
}
else {
$snakeCasedName .= strtolower($propertyName[$i]);
}
}
return $snakeCasedName;
}
return $propertyName;
}
public function denormalize($propertyName) {
$camelCasedName = preg_replace_callback('/(^|_|\\.)+(.)/', function ($match) {
return ('.' === $match[1] ? '_' : '') . strtoupper($match[2]);
}, $propertyName);
if ($this->lowerCamelCase) {
$camelCasedName = lcfirst($camelCasedName);
}
if (null === $this->attributes || in_array($camelCasedName, $this->attributes)) {
return $this->lowerCamelCase ? lcfirst($camelCasedName) : $camelCasedName;
}
return $propertyName;
}
}