Code Monkey home page Code Monkey logo

structure-lumen's Introduction

分层规范及说明

规范

1.  禁止拼音和数字参和在变量名、函数名及数据库表和字段名中,版本号例外
2.  数据库表及字段名均为小写,单词间下划线区分
3.  变量名和函数名均使用小驼峰命名
4.  文件夹及文件均使用大驼峰命名
5.  除model是表名外,其他层成员命名均有属性后缀,且为单数,如service
6.  层命名均为复数,以表严谨
7.  控制器里不要出现数据操作
8.  服务之间可以互相调用
9.  仓储之间禁止互相调用
10. 需要联表,可以使用模型中的关联关系,或是join
11. 函数调用里不要出现1,2等不明意思的数字,请写在当前层类里,作为常量存在
12. 业务涉及事物操作的,在控制器里捕获异常,做事物的开启和提交,服务和数据层只抛异常
13. 接受请求参数只在控制器层处理,其他层只能用接参赋值后的变量进行参数传递

分层

按处理顺序,至上而下分别为
- 请求层 request
- 控制器 controller
- 服务层 service
- 仓储层 repository
- 模型层 model
具体编写细节见demo中注释
路由中需要鉴权的请加上check中间件
所有分层均有基类,可以根据需要抽取公共的方法

接口版本

在路由里按版本号分组
在控制器里以文件夹划分
用于前端应用需要审核时对旧版本的兼容支持

中间件

在项目/app/Http/Middleware下
LogMiddleware作为所有请求的中间件,会做日志等操作
CheckMiddleware为鉴权所需中间件,根据需要实现
两者在/app/Http/Kernel.php中注册

全局响应trait

文件为/app/Helpers/ApiResponse.php
可以在请求层,控制器层和服务层调用,集成在其中基类里了

错误返回码

返回码配置在/config/error.php文件里

部署

- composer install
- cp .env.example .env
- storage 目录和 bootstrap/cache 目录应该允许 Web 服务器写入
- php artisan jwt:secret 生成jwt秘钥

structure-lumen's People

Contributors

armnerd avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.