浅析PHP开发规范


Posted in PHP onFebruary 05, 2018

基本约定

源文件

代码使用<?php开头,忽略闭合标签?>

文件格式必须是无BOM UTF-8格式

一个文件只声明一种类型,如class和interface不能混写在一个源文件中

缩进

使用4个空格来缩进,IDE可以设置

行长度

每行120个字符

关键字

所有关键字均为小写,如true、false

命名

类名为大驼峰法,如UserModel

类方法名为小驼峰法,如getUserId()

函数使用小写字母加_组合,如get_cookie()

变量名使用小驼峰法,如$userId

常量定义为大写字母加_组合,如IS_DEBUG

代码注释标签

类文件中对类、方法、属性进行注释,使用@param @return @throwns

@param注释写出详解,如@param string $username 用户名

业务模块

路由为小写字母加_组成,如/api/get_user_info

View层负责数据展示

Controller层负责输入参数校验,最外层捕捉异常,调用Logic和View视图层

Logic层负责具体业务逻辑,调用Model层,返回处理数据

Model层负责数据表查询和关联关系

异常类需分清功能,如ParamException表示参数错误,UserException表示自定义异常

异常需分类定义code,使用PHP类常量代替,如

<?php
namespace app\exceptions\codes;

class UserExceptionCode extends BaseExceptionCode {
  const NO_AUTH       = 1000001;
  const NO_AUTH_MSG     = '不具有权限';
  const STATUS_EXCEPTION   = 1000002;
  const STATUS_EXCEPTION_MSG = '状态异常';    
}

数据表文件如有Enum类型,使用PHP类常量代替,如

<?php
namespace app\enums;

class UserEnum extends BaseEnum {
  const STATUS_DELETED = -1;// 已删除
  const STATUS_DISABLE = 0;// 禁用
  const STATUS_ENABLE = 1;// 正常

  const AUTH_GUEST     = 1;// 匿名用户
  const AUTH_GENERAL_ADMIN = 2;// 普通管理员
  const AUTH_SUPER_ADMIN  = 3;// 超级管理员
}

其中STATUS和AUTH为数据表映射字段名

Api接口输出,示例

{
  "code" : 0,
  "msg" : "success",
  "data" : {
    "userId" : 100
  }
}

其中code与msg为必填字段,data为空的情况下不填,示例

{
  "code" : 100001,
  "msg" : "不具有权限"
}

其它

数组,键为字符串时候使用单引号,只有一个键时候使用单行,示例

$arr = [ 'userId' => 100 ];

多个键时候使用多行,示例

$arr = [
  'id'    => 100,
  'username' => 'admin',
];

字符串使用单引号'

PHP 相关文章推荐
dedecms采集中可以过滤多行代码的正则表达式
Mar 17 PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
CURL状态码列表(详细)
Jun 27 PHP
三种php连接access数据库方法
Nov 11 PHP
9条PHP编程小知识及易犯的小错误
Jan 22 PHP
php实现倒计时效果
Dec 19 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
php自动载入类用法实例分析
Jun 24 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 PHP
实例讲解PHP页面静态化
Feb 05 #PHP
PHP使用ActiveMQ实例
Feb 05 #PHP
详解PHP中mb_strpos的使用
Feb 04 #PHP
详解PHP文件的自动加载(autoloading)
Feb 04 #PHP
PHP实现QQ登录的开原理和实现过程
Feb 04 #PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 #PHP
php实现解析xml并生成sql语句的方法
Feb 03 #PHP
You might like
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
php实现rc4加密算法代码
2012/04/25 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
python 图片验证码代码分享
2012/07/04 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python for循环与range函数的使用详解
2019/03/23 Python
详解Python用户登录接口的方法
2019/04/17 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
幼教个人求职信范文
2013/12/02 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
投标服务承诺书
2014/05/28 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
企业计划生育责任书
2015/05/09 职场文书
公司安全管理制度范本
2015/08/05 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
Python利用FlashText算法实现替换字符串
2022/03/31 Python