This repository has been archived on 2025-12-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Caramel-CRM-Backup/app/Support/ApiDataTransformer.php
T
vollstock 8703e5ff40
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
Add initial Code
2025-10-20 08:57:51 +02:00

65 lines
1.7 KiB
PHP

<?php
namespace App\Support;
class ApiDataTransformer
{
/**
* Convert array keys from snake_case to camelCase recursively
*/
public static function snakeToCamel(array $data): array
{
$result = [];
foreach ($data as $key => $value) {
$camelKey = self::convertSnakeToCamel($key);
if (is_array($value)) {
$result[$camelKey] = self::snakeToCamel($value);
} elseif (is_object($value)) {
$result[$camelKey] = self::snakeToCamel((array)$value);
} else {
$result[$camelKey] = $value;
}
}
return $result;
}
/**
* Convert array keys from camelCase to snake_case recursively
*/
public static function camelToSnake(array $data): array
{
$result = [];
foreach ($data as $key => $value) {
$snakeKey = self::convertCamelToSnake($key);
if (is_array($value)) {
$result[$snakeKey] = self::camelToSnake($value);
} elseif (is_object($value)) {
$result[$snakeKey] = self::camelToSnake((array)$value);
} else {
$result[$snakeKey] = $value;
}
}
return $result;
}
/**
* Convert a single string from snake_case to camelCase
*/
protected static function convertSnakeToCamel(string $string): string
{
return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $string))));
}
/**
* Convert a single string from camelCase to snake_case
*/
protected static function convertCamelToSnake(string $string): string
{
return strtolower(preg_replace('/(?<!^)[A-Z]/', '_$0', $string));
}
}