• 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也需要写注释
    • 枚举字段主要把每个值含义写到注释里
  • 相关阅读:
    条件编译中的基本语法
    UITableView中headerView视察滚动的简单实现
    CocoaPods使用简单回顾
    CocoaPods第三方类库管理工具的简单使用
    Xcode中release和debug模式
    转:关于LazyTableImage
    汉字与UTF-8编码之间的转换
    结构体与字符串之间的转换
    MFC中小笔记(二)
    升级 WIN8.1 VC6.0和 Visual Assist 的使用问题
  • 原文地址:https://www.cnblogs.com/cxy2020/p/14300337.html
Copyright © 2020-2023  润新知