Skip to content

Commit

Permalink
✨ (CamelConverter): 蛇形命名和驼峰互相转换,拆分功能
Browse files Browse the repository at this point in the history
  • Loading branch information
Joycezhangw committed Dec 26, 2023
1 parent 35763d8 commit 483512e
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 58 deletions.
75 changes: 75 additions & 0 deletions src/Helpers/CamelHelper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<?php
// +----------------------------------------------------------------------
// | 通用类包
// +----------------------------------------------------------------------
// | Copyright (c) 2020 http://www.hmall.com.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: joyecZhang <[email protected]>
// +----------------------------------------------------------------------

declare (strict_types=1);

namespace JoyceZ\LaravelLib\Helpers;


use Illuminate\Support\Str;

class CamelHelper
{
/**
* 循环迭代将数组键驼峰转下划线
* @param $arr
* @return array
*/
public static function recursiveConvertParameterNameCase($arr)
{
if (!is_array($arr)) {
return $arr;
}
$params = [];
foreach ($arr as $key => $value) {
if (!is_int($key)) {
if (is_array($value)) {
$params[Str::snake($key)] = self::recursiveConvertParameterNameCase($value);
} else {
$params[Str::snake($key)] = $value;
}
} elseif (is_array($value)) {
$params[$key] = self::recursiveConvertParameterNameCase($value);
} else {
$params[Str::snake($key)] = $value;
}
}
return $params;
}

/**
* 循环迭代将数组键转换位驼峰
* @param $arr
* @return array
*/
public static function recursiveConvertNameCaseToCamel($arr)
{
if (!is_array($arr)) {
return $arr;
}
$outArray = [];
foreach ($arr as $key => $value) {
if (!is_int($key)) {
if (is_array($value)) {
$outArray[Str::camel($key)] = self::recursiveConvertNameCaseToCamel($value);
} else {
$outArray[Str::camel($key)] = $value;
}
} elseif (is_array($value)) {
$outArray[$key] = self::recursiveConvertNameCaseToCamel($value);
} else {
$outArray[Str::camel($key)] = $value;
}
}
return $outArray;
}

}
61 changes: 4 additions & 57 deletions src/Middleware/ApiCaseConverter.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use JoyceZ\LaravelLib\Helpers\CamelHelper;
use Symfony\Component\HttpFoundation\ParameterBag;

/**
Expand Down Expand Up @@ -49,35 +49,9 @@ private function convertRequestNameCase($request)
private function convertParameterNameCase($parameterBag)
{
$parameters = $parameterBag->all();
$parameterBag->replace($this->recursiveConvertParameterNameCase($parameters));
$parameterBag->replace(CamelHelper::recursiveConvertParameterNameCase($parameters));
}

/**
* 循环迭代将数组键驼峰转下划线
* @param $arr
* @return array
*/
private function recursiveConvertParameterNameCase($arr)
{
if (!is_array($arr)) {
return $arr;
}
$params = [];
foreach ($arr as $key => $value) {
if (!is_int($key)) {
if (is_array($value)) {
$params[Str::snake($key)] = $this->recursiveConvertParameterNameCase($value);
} else {
$params[Str::snake($key)] = $value;
}
} elseif (is_array($value)) {
$params[$key] = $this->recursiveConvertParameterNameCase($value);
} else {
$params[Str::snake($key)] = $value;
}
}
return $params;
}

/**
* 响应数据下划线转驼峰
Expand All @@ -88,35 +62,8 @@ private function convertResponseNameCase($response)
$content = $response->getContent();
$json = json_decode($content, true);
if (is_array($json)) {
$json = $this->recursiveConvertNameCaseToCamel($json);
$json =CamelHelper::recursiveConvertNameCaseToCamel($json);
$response->setContent(json_encode($json));
}
}

/**
* 循环迭代将数组键转换位驼峰
* @param $arr
* @return array
*/
private function recursiveConvertNameCaseToCamel($arr)
{
if (!is_array($arr)) {
return $arr;
}
$outArray = [];
foreach ($arr as $key => $value) {
if (!is_int($key)) {
if (is_array($value)) {
$outArray[Str::camel($key)] = $this->recursiveConvertNameCaseToCamel($value);
} else {
$outArray[Str::camel($key)] = $value;
}
} elseif (is_array($value)) {
$outArray[$key] = $this->recursiveConvertNameCaseToCamel($value);
} else {
$outArray[Str::camel($key)] = $value;
}
}
return $outArray;
}
}
}
2 changes: 1 addition & 1 deletion src/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

return [
'passport' => [
'check_captcha_cache_key' => 'captcha_uniqid',
'check_captcha_cache_key' => 'captchaUniqId',
'password_salt' => env('LANDAO_PASSPORT_PASSWORD_SALT', env('APP_KEY'))
],
'security' => [
Expand Down

0 comments on commit 483512e

Please sign in to comment.