浅析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截取中文字符串的问题
Jul 12 PHP
中篇:安装及配置PHP
Dec 13 PHP
php Memcache 中实现消息队列
Nov 24 PHP
解析PHP的session过期设置
Jun 29 PHP
php实现字符串反转输出的方法
Mar 14 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
php对微信支付回调处理的方法
Aug 23 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 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
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
日期 时间js控件
2009/05/07 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
内容编辑个人求职信
2013/12/10 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
中职生自荐信范文
2014/06/15 职场文书
商铺门前三包责任书
2014/07/25 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
迎国庆演讲稿
2014/09/05 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
自我检讨书怎么写
2015/05/07 职场文书
不同意离婚代理词
2015/05/23 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
Python os和os.path模块详情
2022/04/02 Python