为什么80%的码农都做不了架构师?>>>
1 框架目录及结构简介
1.1 目录结构
1.2框架简介和主要目录结构简介
1.2.1 框架版本采用:Lumen (5.5.2) (Laravel Components 5.5.*)版本
参考链接:https://lumen.laravel-china.org/docs/5.2
链接:https://github.com/echobool/lumen-api-demo
1.2.2 框架目录结构简介
app | 主要包含了所需的controllers(控制器),models(模型),Repository(models的数据模型),Transformers(数据转换层,第三方工具dingo)。 |
bootstrap | 目录包含了少许文件,用于框架的启动和自动载入配置 |
config | 包含了应用所有的配置文件,建议通读一遍这些配置文件 |
database | 包含了数据库迁移文件及填充文件 |
public | 包含了应用入口文件 index.php 和前端资源文件 |
resources | 包含了应用视图文件和未编译的原生前端资源文件 |
routes | 包含了应用定义的所有路由 |
storage | 包含了编译后的 Blade 模板、基于文件的 Session、文件缓存 |
vendor | 包含了应用所有通过 Composer 加载的依赖 |
2. 目录及文件目录规范
2.1. 命名规范
2.1.1 所有目录及文件的命名用英文命名,禁用不规则符号和拼音等不规则命名方式(建议使用百度翻译、谷歌翻译等翻译),简单直白的表示出目录的意思。
2.1.2 参考编码规范“PHP编码规范-PSR-1”。
2.2. 目录结构规范
2.2.1. 框架一级目录全部以小写英文字母组成(框架自带目录)。
2.2.2. 框架二级目录:
2.1.2.1. app目录
app目录中的所有下级目录全部以大写英文字母开头组成。例:目录Backend、School、Student、Teacher。
app目录中的PHP文件命名方式遵循大写开头的驼峰命名法。例:UserController.php、QuestionsRepository.php。
2.2.2.2. 其他目录
其他目录中的二级目录及所有下一级目录,以一级目录方式命名,以小写英文字母开头组成。
3. 变量规范
3.1 变量命名
3.1.1 变量命名采用英文单词,变量类型不强制!多词组成时用下划线连接,采用小写的方式。也可采用小驼峰的命名方式. 例: $table_name 、$arrayData。
3.1.2 全局常量的命名方式,参考框架文件中的“constant.php”命名方式。
3.2 变量的初始化。
PHP本身并没有对初始化变量的名字. 所以常用做法就是给一个未使用的赋一个空值。例如:$is_correct = []、$answer_option =‘’;
3.3 参考编码规范“PHP编码规范-PSR-1”。
4. 函数与类规范
4.1函数的命名
下划线连接的组合规则, 例 init(), list_category()
4.2类及其成员的命名
4.2.1类的命名
类的命名采用大写开头的大驼峰命名方式,例如:
class QuestionController()。
4.2.2类成员的命名
函数的命名采用小写开头的小驼峰命名方式(不采用下划线拼接的方式),例如:updateChioceQuestionById()。
4.3 参考编码规范:
1. “PHP编码规范-PSR-1”,
2. “PHP编码规范-PSR-4”。
5. API文档
5.1 API的生成
5.1.1 第三方组件dingo/api
此次的API文档的生成与开发采用了第三方组件dingo/api,未经手工编写,有固定的格式生成。参考编写格式:UserController.php其中的注释编写格式,这里不做赘述。
5.1.2 安装
首先安装nodejs,然后参考链接http://apidocjs.com安装和运行。
5.1.2 生成方式
使用git工具或者命令控制台,生成命令:
apidoc -i App/Http/Controllers/Api/V1/ -o public/apidoc/
6. 返回格式
6.1 请求数据的返回格式
部分返回的数据格式经Transformers转换成array的格式返回。再由dingo/api的方法返回。禁止再封装其他类型的方法返回数据及其格式。例如:
$transformer = new QuestionsTransformer();
$transformer->transform($question);
return $this->response->item($question, $transformer)
->header('Location', $location)
->setStatusCode(201);//创建时返回值
7. 数据库
数据库的开发与维护由专人完成,这里不做详细论述。
8. 其他注意事项
8.1 代码风格及其规范应符合 PHP编码规范-PSR-2 中的所有规范。