随笔 - 301  文章 - 2  评论 - 16  阅读 - 34万

PHP研发开发规范2

1 php编码规范

1.1 php开发工具

安装prettier方法如下

安装prettier 展开源码
说明:
1.phpstorm每次新建的项目,File Watchers默认没勾选上,需要自己在勾选下

2. prettier的watcher配置如下

3. 每个项目git仓库会增加一个配置文件.prettierrc,严禁修改

 

1.2 使用fis3上传代码

docker和开发机都可以使用fis3上传代码,操作步骤如下:

1) 在自己电脑上按照好fis3工具

2)将fis3执行脚本放在php项目根目录下,注意在.gitignore添加此文件,不要把此脚本提交到git仓库里,脚本请到这里下载:

3)修改脚本的App和RemoteServer两个参数,app是项目名字,RemoteServer中修改想要上传的目标服务器域名

4)在项目根目录下执行命令(fis3 release -Lw),每次执行会先全量上传整个项目,然后脚本会一直监控,每当有文件修改会自动上传

 

1.3 编码规范参照代码规范执行

 

 

1.4 代码注释

文件、类和函数必须写注释

一定不要因为代码或者文件复制过来的而不去修改注释

phpstorm设置注释模板,进入设置:Editor-》File and Code Tempates-》PHP File Header

phpstorm添加函数注释快捷方式,在函数上方输入/**,然后回车就会自动生成函数注释

文件注释示例

/**
 * @befie 示例                             # 功能说明
 * @author xxx<xxx@zuoyebang.com>         # 作者
 * @since   1.1 2020-06-10 第二版 @xingfu  # 更新说明
 * @date 2019-05-19                       # 创建时间
 */

函数注释示例

/**
 * 函数功能
 * @param 参数1
 * @param 参数2
 * @return 返回值
 * @throws Exception
 */

2 odp开发规范

2.1 action基类

parent-phplib库统一封装了各种场景的action基类,各个服务里不要在自己封装action基类

action基类
说明
使用范围
Parentlib_Action_BaseAction

此基类用于app端返回json数据接口,需要校验conf文件

端上接口
Parentlib_Action_BaseAjaxAction

此基类用于前端返回json数据接口,需要校验conf文件

fe接口
Parentlib_Action_BaseMagicAction

此基类用于app端或者前端返回json数据接口,需要校验conf文件

通用接口,有安全问题,不建议使用
Parentlib_Action_BaseWebAction

此基类用于前端不返回json数据接口,不需要校验conf文件,tpl接口使用

tpl接口,禁用
Parentlib_Action_BaseFeAction

此基类用于前端返回json数据接口,不需要校验conf文件

fe接口,禁用
Parentlib_Action_BaseInternalAction

此基类用于内网服务接口action基类

内网接口
Parentlib_Action_BaseWxxcxAction 此基类用于微信小程序接口,会进行接口参数签名 小程序接口

2.2 dao基类

parent-phplib库统一封装了dao基类,各个服务里请直接使用lib库的基类

说明:hk库共有3个dao基类,除了下面这2个,还有个Hk_Common_Dao,之前封装了一个基于此类的Parentlib_Dao_Base

dao基类
说明
方法
Parentlib_Common_BaseDao

此基类用于单表dao,继承至Hk_Common_BaseDao

获取查询字段数组:getQueryFields

查询带分页的列表数据:getPageList

查询列表数据,并返回是否还有下一页:getMoreList

Parentlib_Common_BaseMultiDao

此基类用于分表dao,继承至Hk_Common_BaseMultiDao

获取查询字段数组:getQueryFields

按环境获取分表数量:getMaxTableNum

查询所有表数据:queryAllTable

查询带分页的列表数据:getPageList

查询列表数据,并返回是否还有下一页:getMoreList

 

2.3 脚本

  • 脚本文件严禁直接创建在/script根目录下
  • 按照模块创建目录
  • 模块目录内的脚本类型分为守护进程deamon、定时任务cron和一次性任务once,分表创建目录,见下图

2)脚本编码

  • 脚本文件名字必须以大写字母开头
  • 脚本统一继承脚本基类Parentlib_Common_BaseScript
  • 脚本必须写完整注释,定时任务需要在注释里写清楚crontab计划
  • 脚本内打info日志直接使用Bd_Log::addNotice,基类会统一打一条日志
  • 脚本里注释填写好jira工单地址
  • 脚本一定要写到自己相关的项目里

2.4 日志

代码里打日志的地方一定要想清楚该往info还是wf里写

wf日志:不要什么错误都往wf里打,Bd_Log::warning()和Bd_Log::fatal()每次请求都会打一条日志,一次接口请求里代码多次调用会打多条wf日志,影响接口错误里的统计

info日志:一次接口请求框架会最后打一条info日志,不要在代码中使用Bd_Log::notice(),应该使用Bd_Log::AddNotice()

 

2.5 parent-phplib库公共方法

parent-phplib库封装了公共的ds,service和util,开发时统一使用公共库的方法,不要重复造轮子

使用手册见wiki:parent-phplib库使用手册

 

2.6 rpc调用

每个项目调用一个第三方服务时,在library/XX/rpc/目录下封装一个类来统一封装这个第三方服务的所有接口,不要在其他地方分散去单独写,方便维护和管理

 

2.7 接口规范

入参和出参字段必须使用驼峰

 

2.7 其他

  • 不要直接复制目录或者文件到其他项目,按需获取,无效的代码要删除
  • 测试接口不要对外发布,如果有测试需要一定要继承内网的action

 

3 mysql

3.1 表设计

  • 表名称以tbl开头,驼峰格式命名,
  • 字段名字使用下划线的格式,不要用驼峰
  • 非text字段一定要设置NOT NULL
  • 注意id字段的长度,比如公司的用户uid一定要用bigint
  • 记录id不要用自增id,要用发号器生成的id

3.2 表注释

  • 一定要写表名称和字段的注释,自增id也需要写注释
  • 枚举字段主要把每个值含义写到注释里
posted on   Code2020  阅读(283)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示

目录导航