Showing
1 changed file
with
57 additions
and
59 deletions
1 | -## LUMEN+API Controller 规范 | 1 | +## LUMEN+API Controller 规范 |
2 | 2 | ||
3 | -### 1. 第三方依赖库规范 | 3 | +### 1. 第三方依赖库规范 |
4 | 4 | ||
5 | -在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 | 5 | +在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 |
6 | 6 | ||
7 | -* dingo/api : 实现API接口库 | 7 | +* dingo/api : 实现API接口库 |
8 | -* vlucas/phpdotenv : 实现了配置文件读取的函数,包括env()函数等 | 8 | +* vlucas/phpdotenv : 实现了配置文件读取的函数,包括env()函数等 |
9 | -* marc-mabe/php-enum : 实现php的ENUM功能 | 9 | +* marc-mabe/php-enum : 实现php的ENUM功能 |
10 | -* barryvdh/laravel-ide-helper : IDE帮助,_ide_helper.php文件提供 | 10 | +* barryvdh/laravel-ide-helper : IDE帮助,_ide_helper.php文件提供 |
11 | 11 | ||
12 | 12 | ||
13 | 13 | ||
14 | -### 2. Controller规范 | 14 | +### 2. Controller规范 |
15 | 15 | ||
16 | -* 所有Controller的基类以编写定义的BasicController为准。BasicController实现了一些基本的HTTP请求和应答功能。如$requestHander变量处理请求,respond函数处理应答。Trait类UtilToolMethod实现了通用功能函数。 | 16 | +* 所有Controller的基类以编写定义的BasicController为准。BasicController实现了一些基本的HTTP请求和应答功能。如$requestHander变量处理请求,respond函数处理应答。Trait类UtilToolMethod实现了通用功能函数。 |
17 | 17 | ||
18 | -* 所有的Controller不再使用Request对象,而使用BasicController中的$requestHandler变量。 | 18 | +* 所有的Controller不再使用Request对象,而使用BasicController中的$requestHandler变量。 |
19 | 19 | ||
20 | -* $requestHandler变量使用不再推荐使用数组形式结构获得参数变量,而使用使用其暴露的方法 | 20 | +* $requestHandler变量使用不再推荐使用数组形式结构获得参数变量,而使用使用其暴露的方法 |
21 | 21 | ||
22 | ```php | 22 | ```php |
23 | $this->requestHandler->input('key1',''); | 23 | $this->requestHandler->input('key1',''); |
... | @@ -29,7 +29,7 @@ | ... | @@ -29,7 +29,7 @@ |
29 | $this->requestHandler->path(); | 29 | $this->requestHandler->path(); |
30 | ``` | 30 | ``` |
31 | 31 | ||
32 | -* 对于请求参数的验证,统一使用validate方法 | 32 | +* 对于请求参数的验证,统一使用validate方法 |
33 | 33 | ||
34 | ```php | 34 | ```php |
35 | $this->validate($this->requestHandler,[ | 35 | $this->validate($this->requestHandler,[ |
... | @@ -37,11 +37,11 @@ | ... | @@ -37,11 +37,11 @@ |
37 | ]); | 37 | ]); |
38 | ``` | 38 | ``` |
39 | 39 | ||
40 | -* 对于自己业务有特殊需求的,在BasicController基础上,扩展Controller的功能和方法。 然后再让其它的Controller类继承这个定义的Controller | 40 | +* 对于自己业务有特殊需求的,在BasicController基础上,扩展Controller的功能和方法。 然后再让其它的Controller类继承这个定义的Controller |
41 | 41 | ||
42 | ```php | 42 | ```php |
43 | /** | 43 | /** |
44 | - * 应用授权用户基类,提供用户数据及用户操作方法 | 44 | + * 应用授权用户基类,提供用户数据及用户操作方法 |
45 | */ | 45 | */ |
46 | class UserAuthBasicControll extends BaiscController | 46 | class UserAuthBasicControll extends BaiscController |
47 | { | 47 | { |
... | @@ -60,11 +60,11 @@ | ... | @@ -60,11 +60,11 @@ |
60 | */ | 60 | */ |
61 | public function getEmpUser() { return $this->_empUser; } | 61 | public function getEmpUser() { return $this->_empUser; } |
62 | 62 | ||
63 | - public function userSiteAccess($pointSiteId) { /* 实现权限验证.. */ } | 63 | + public function userSiteAccess($pointSiteId) { /* 实现权限验证.. */ } |
64 | } | 64 | } |
65 | ``` | 65 | ``` |
66 | 66 | ||
67 | -* Controller层函数使用对象的自动注入依赖。 | 67 | +* Controller层函数使用对象的自动注入依赖。 |
68 | 68 | ||
69 | ```php | 69 | ```php |
70 | class CustomerController | 70 | class CustomerController |
... | @@ -73,7 +73,7 @@ | ... | @@ -73,7 +73,7 @@ |
73 | private $_crmService = null; | 73 | private $_crmService = null; |
74 | 74 | ||
75 | public function __construct(CRMService $crmService) { | 75 | public function __construct(CRMService $crmService) { |
76 | - $this->_crmService = $crmService; // 自动注入依赖 | 76 | + $this->_crmService = $crmService; // 自动注入依赖 |
77 | } | 77 | } |
78 | 78 | ||
79 | public function customerEnterIn($userInfo) { | 79 | public function customerEnterIn($userInfo) { |
... | @@ -82,7 +82,7 @@ | ... | @@ -82,7 +82,7 @@ |
82 | } | 82 | } |
83 | ``` | 83 | ``` |
84 | 84 | ||
85 | -* Controller层不能直接操作SQL,不能直接操作Model对象实现SQL功能。要实现数据库**增删改**,必须通过Model封装起来。以下方法在Controller中直接操作DB表都是被禁止的 | 85 | +* Controller层不能直接操作SQL,不能直接操作Model对象实现SQL功能。要实现数据库**增删改**,必须通过Model封装起来。以下方法在Controller中直接操作DB表都是被禁止的 |
86 | 86 | ||
87 | ```php | 87 | ```php |
88 | class SomeController | 88 | class SomeController |
... | @@ -93,7 +93,7 @@ | ... | @@ -93,7 +93,7 @@ |
93 | DB::table('users')->truncate(); | 93 | DB::table('users')->truncate(); |
94 | } | 94 | } |
95 | 95 | ||
96 | - /* 对于查询来说,简单的查询可以在Controller直接完成,复杂的查询需要通过Model层添加方法来完成 */ | 96 | + /* 对于查询来说,简单的查询可以在Controller直接完成,复杂的查询需要通过Model层添加方法来完成 */ |
97 | public function userOperator() { | 97 | public function userOperator() { |
98 | $id = 100; | 98 | $id = 100; |
99 | $userInstance1 = User::find($id); | 99 | $userInstance1 = User::find($id); |
... | @@ -103,46 +103,46 @@ | ... | @@ -103,46 +103,46 @@ |
103 | } | 103 | } |
104 | ``` | 104 | ``` |
105 | 105 | ||
106 | -* Controller通过调用Model层,自定义Service层,Event, Queue来完成自身的业务逻辑。但是在Controller层,尽量做到对于底层服务的底耦合,为了能够更好的测度,也尽量使用对象的依赖注入。 | 106 | +* Controller通过调用Model层,自定义Service层,Event, Queue来完成自身的业务逻辑。但是在Controller层,尽量做到对于底层服务的底耦合,为了能够更好的测度,也尽量使用对象的依赖注入。 |
107 | 107 | ||
108 | -* Controller层与其它层的一般关系如下 | 108 | +* Controller层与其它层的一般关系如下 |
109 | 109 | ||
110 | ```sequence | 110 | ```sequence |
111 | - Router ->> Controller : 数据请求 | 111 | + Router ->> Controller : 数据请求 |
112 | - Controller ->> Controller : 处理用户请求 | 112 | + Controller ->> Controller : 处理用户请求 |
113 | - Controller ->> Model : 数据业务处理 | 113 | + Controller ->> Model : 数据业务处理 |
114 | - Model -> Model : 数据查询更新 | 114 | + Model -> Model : 数据查询更新 |
115 | - Model -> Service : 业务逻辑处理 | 115 | + Model -> Service : 业务逻辑处理 |
116 | - Controller ->> Service : 业务逻辑处理 | 116 | + Controller ->> Service : 业务逻辑处理 |
117 | - Service --> ClientAPI : 服务请求处理 | 117 | + Service --> ClientAPI : 服务请求处理 |
118 | - ClientAPI --> Service : 服务应答 | 118 | + ClientAPI --> Service : 服务应答 |
119 | - Service --> Controller : 业务处理结果 | 119 | + Service --> Controller : 业务处理结果 |
120 | - Controller --> Router : 数据应答 | 120 | + Controller --> Router : 数据应答 |
121 | ``` | 121 | ``` |
122 | 122 | ||
123 | -* 如果要实现程序异步机制,请使用Lumen提供的Queue功能。异步机制的使用可以提高API的应答效率,以下场景比如事件机制的接收处理,对于延时的任务机制,也需要通过Queue功能完成 | 123 | +* 如果要实现程序异步机制,请使用Lumen提供的Queue功能。异步机制的使用可以提高API的应答效率,以下场景比如事件机制的接收处理,对于延时的任务机制,也需要通过Queue功能完成 |
124 | 124 | ||
125 | ```sequence | 125 | ```sequence |
126 | - Router -> Controller : 数据请求 | 126 | + Router -> Controller : 数据请求 |
127 | - Controller -> Controller : 处理请求 | 127 | + Controller -> Controller : 处理请求 |
128 | - Controller --> QueueJob : 任务添加Dispatcher | 128 | + Controller --> QueueJob : 任务添加Dispatcher |
129 | - Controller --> Router : 数据应答 | 129 | + Controller --> Router : 数据应答 |
130 | - QueueJob -> QueueJob : 任务调度 | 130 | + QueueJob -> QueueJob : 任务调度 |
131 | - QueueJob -> JobProcedure : JOB处理 | 131 | + QueueJob -> JobProcedure : JOB处理 |
132 | - JobProcedure -> Model : 数据应务处理 | 132 | + JobProcedure -> Model : 数据应务处理 |
133 | ``` | 133 | ``` |
134 | 134 | ||
135 | -* 如果编写与业务无关的类库、服务等应用,需要与上层的Controller/Model解耦,当需要有数据或者事件通知到上层应用,并让上层应用决定做出处理时,那么可以利用Event事件机制。 | 135 | +* 如果编写与业务无关的类库、服务等应用,需要与上层的Controller/Model解耦,当需要有数据或者事件通知到上层应用,并让上层应用决定做出处理时,那么可以利用Event事件机制。 |
136 | 136 | ||
137 | ```sequence | 137 | ```sequence |
138 | - Controller -> EventListener : 订阅事件 | 138 | + Controller -> EventListener : 订阅事件 |
139 | - MyService -> MyService : 业务处理 | 139 | + MyService -> MyService : 业务处理 |
140 | - MyService -> Event : 派发事件 | 140 | + MyService -> Event : 派发事件 |
141 | - Event --> EventListener : 事件触发 | 141 | + Event --> EventListener : 事件触发 |
142 | - EventListener -> EventListener : 事件处理 | 142 | + EventListener -> EventListener : 事件处理 |
143 | ``` | 143 | ``` |
144 | 144 | ||
145 | -* Controller层的处理只作出正常的返回处理,而不对异常情况进行返回,遇到异常情况时,通过Exception的机制进行数据的返回。 | 145 | +* Controller层的处理只作出正常的返回处理,而不对异常情况进行返回,遇到异常情况时,通过Exception的机制进行数据的返回。 |
146 | 146 | ||
147 | ```php | 147 | ```php |
148 | public function dosth() { | 148 | public function dosth() { |
... | @@ -155,18 +155,16 @@ | ... | @@ -155,18 +155,16 @@ |
155 | } | 155 | } |
156 | ``` | 156 | ``` |
157 | 157 | ||
158 | -* BasicController,BaseModel有UtilToolMethods的相关方法,实现了以下的基本功能 | 158 | +* BasicController,BaseModel有UtilToolMethods的相关方法,实现了以下的基本功能 |
159 | 159 | ||
160 | - | 索引 | 方法名 | 备注 | | 160 | + | 索引 | 方法名 | 备注 | |
161 | | ---- | --------------- | ---------------------------------- | | 161 | | ---- | --------------- | ---------------------------------- | |
162 | - | 1 | arrValidate | 实现以数组字典数据的验证 | | ||
163 | - | 2 | dispatchJob | 派发事件 | | ||
164 | - | 3 | utilToArray | 将对象转换为数组 | | ||
165 | - | 4 | getConfigValue | 获得配置文件中的值 | | ||
166 | - | 5 | arrayEncode | 将字典Hash成一个字符串,一般用来实现CacheKey | | ||
167 | - | 6 | getEnv | 获得环境变量名称: 有dev/testing/production/ | | ||
168 | - | 7 | envIsTesting | 判断环境是否测试环境 | | ||
169 | - | 8 | envIsDemo | 判断环境是否环境 | | ||
170 | - | 9 | envIsProduction | 判断环境是否生产环境 | | ||
171 | - | ||
172 | - ? | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
162 | + | 1 | arrValidate | 实现以数组字典数据的验证 | | ||
163 | + | 2 | dispatchJob | 派发事件 | | ||
164 | + | 3 | utilToArray | 将对象转换为数组 | | ||
165 | + | 4 | getConfigValue | 获得配置文件中的值 | | ||
166 | + | 5 | arrayEncode | 将字典Hash成一个字符串,一般用来实现CacheKey | | ||
167 | + | 6 | getEnv | 获得环境变量名称: 有dev/testing/production/ | | ||
168 | + | 7 | envIsTesting | 判断环境是否测试环境 | | ||
169 | + | 8 | envIsDemo | 判断环境是否环境 | | ||
170 | + | 9 | envIsProduction | 判断环境是否生产环境 | | ... | ... |
-
Please register or login to post a comment