浅析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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(2)
Oct 09 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
Jul 05 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
Nov 19 PHP
php读取文件内容的方法汇总
Jan 24 PHP
PHP中的常见魔术方法功能作用及用法实例
Jul 01 PHP
PHP.ini安全配置检测工具pcc简单介绍
Jul 02 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
浅谈PHP中的
Apr 23 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 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 FPDF类库应用实现代码
2009/03/20 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
javascript 显示当前系统时间代码
2009/12/28 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
10款最好的Web开发的 Python 框架
2015/03/18 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
学生周末回家住宿长期请假条
2014/02/15 职场文书
小学毕业感言50字
2014/02/16 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
出国留学经济担保书
2014/04/01 职场文书
毕业设计致谢词
2015/05/14 职场文书
少先队中队工作总结
2015/08/14 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
vue判断按钮是否可以点击
2022/04/09 Vue.js