浅析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 相关文章推荐
php缓存技术介绍
Nov 25 PHP
PHP下判断网址是否有效的代码
Oct 08 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
深入Apache与Nginx的优缺点比较详解
Jun 17 PHP
php通过字符串调用函数示例
Mar 02 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
Jun 24 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
PHP单态模式简单用法示例
Nov 16 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
Jun 06 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 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实现购物车功能(上)
2020/07/23 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
[原创]图片分页查看
2006/08/28 Javascript
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
js电话号码验证方法
2015/09/28 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
python中的格式化输出用法总结
2016/07/28 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
党校自我鉴定范文
2013/10/02 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
学生喝酒检讨书500字
2014/11/02 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
Java版 单机五子棋
2022/05/04 Java/Android