Skip to content

Commit 483512e

Browse files
committed
✨ (CamelConverter): 蛇形命名和驼峰互相转换,拆分功能
1 parent 35763d8 commit 483512e

File tree

3 files changed

+80
-58
lines changed

3 files changed

+80
-58
lines changed

src/Helpers/CamelHelper.php

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?php
2+
// +----------------------------------------------------------------------
3+
// | 通用类包
4+
// +----------------------------------------------------------------------
5+
// | Copyright (c) 2020 http://www.hmall.com.cn All rights reserved.
6+
// +----------------------------------------------------------------------
7+
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
8+
// +----------------------------------------------------------------------
9+
// | Author: joyecZhang <zhangwei762@163.com>
10+
// +----------------------------------------------------------------------
11+
12+
declare (strict_types=1);
13+
14+
namespace JoyceZ\LaravelLib\Helpers;
15+
16+
17+
use Illuminate\Support\Str;
18+
19+
class CamelHelper
20+
{
21+
/**
22+
* 循环迭代将数组键驼峰转下划线
23+
* @param $arr
24+
* @return array
25+
*/
26+
public static function recursiveConvertParameterNameCase($arr)
27+
{
28+
if (!is_array($arr)) {
29+
return $arr;
30+
}
31+
$params = [];
32+
foreach ($arr as $key => $value) {
33+
if (!is_int($key)) {
34+
if (is_array($value)) {
35+
$params[Str::snake($key)] = self::recursiveConvertParameterNameCase($value);
36+
} else {
37+
$params[Str::snake($key)] = $value;
38+
}
39+
} elseif (is_array($value)) {
40+
$params[$key] = self::recursiveConvertParameterNameCase($value);
41+
} else {
42+
$params[Str::snake($key)] = $value;
43+
}
44+
}
45+
return $params;
46+
}
47+
48+
/**
49+
* 循环迭代将数组键转换位驼峰
50+
* @param $arr
51+
* @return array
52+
*/
53+
public static function recursiveConvertNameCaseToCamel($arr)
54+
{
55+
if (!is_array($arr)) {
56+
return $arr;
57+
}
58+
$outArray = [];
59+
foreach ($arr as $key => $value) {
60+
if (!is_int($key)) {
61+
if (is_array($value)) {
62+
$outArray[Str::camel($key)] = self::recursiveConvertNameCaseToCamel($value);
63+
} else {
64+
$outArray[Str::camel($key)] = $value;
65+
}
66+
} elseif (is_array($value)) {
67+
$outArray[$key] = self::recursiveConvertNameCaseToCamel($value);
68+
} else {
69+
$outArray[Str::camel($key)] = $value;
70+
}
71+
}
72+
return $outArray;
73+
}
74+
75+
}

src/Middleware/ApiCaseConverter.php

Lines changed: 4 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Closure;
66
use Illuminate\Http\Request;
7-
use Illuminate\Support\Str;
7+
use JoyceZ\LaravelLib\Helpers\CamelHelper;
88
use Symfony\Component\HttpFoundation\ParameterBag;
99

1010
/**
@@ -49,35 +49,9 @@ private function convertRequestNameCase($request)
4949
private function convertParameterNameCase($parameterBag)
5050
{
5151
$parameters = $parameterBag->all();
52-
$parameterBag->replace($this->recursiveConvertParameterNameCase($parameters));
52+
$parameterBag->replace(CamelHelper::recursiveConvertParameterNameCase($parameters));
5353
}
5454

55-
/**
56-
* 循环迭代将数组键驼峰转下划线
57-
* @param $arr
58-
* @return array
59-
*/
60-
private function recursiveConvertParameterNameCase($arr)
61-
{
62-
if (!is_array($arr)) {
63-
return $arr;
64-
}
65-
$params = [];
66-
foreach ($arr as $key => $value) {
67-
if (!is_int($key)) {
68-
if (is_array($value)) {
69-
$params[Str::snake($key)] = $this->recursiveConvertParameterNameCase($value);
70-
} else {
71-
$params[Str::snake($key)] = $value;
72-
}
73-
} elseif (is_array($value)) {
74-
$params[$key] = $this->recursiveConvertParameterNameCase($value);
75-
} else {
76-
$params[Str::snake($key)] = $value;
77-
}
78-
}
79-
return $params;
80-
}
8155

8256
/**
8357
* 响应数据下划线转驼峰
@@ -88,35 +62,8 @@ private function convertResponseNameCase($response)
8862
$content = $response->getContent();
8963
$json = json_decode($content, true);
9064
if (is_array($json)) {
91-
$json = $this->recursiveConvertNameCaseToCamel($json);
65+
$json =CamelHelper::recursiveConvertNameCaseToCamel($json);
9266
$response->setContent(json_encode($json));
9367
}
9468
}
95-
96-
/**
97-
* 循环迭代将数组键转换位驼峰
98-
* @param $arr
99-
* @return array
100-
*/
101-
private function recursiveConvertNameCaseToCamel($arr)
102-
{
103-
if (!is_array($arr)) {
104-
return $arr;
105-
}
106-
$outArray = [];
107-
foreach ($arr as $key => $value) {
108-
if (!is_int($key)) {
109-
if (is_array($value)) {
110-
$outArray[Str::camel($key)] = $this->recursiveConvertNameCaseToCamel($value);
111-
} else {
112-
$outArray[Str::camel($key)] = $value;
113-
}
114-
} elseif (is_array($value)) {
115-
$outArray[$key] = $this->recursiveConvertNameCaseToCamel($value);
116-
} else {
117-
$outArray[Str::camel($key)] = $value;
118-
}
119-
}
120-
return $outArray;
121-
}
122-
}
69+
}

src/config.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
return [
44
'passport' => [
5-
'check_captcha_cache_key' => 'captcha_uniqid',
5+
'check_captcha_cache_key' => 'captchaUniqId',
66
'password_salt' => env('LANDAO_PASSPORT_PASSWORD_SALT', env('APP_KEY'))
77
],
88
'security' => [

0 commit comments

Comments
 (0)