浅析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 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
php的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
PHP获取MAC地址的函数代码
Sep 11 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
php数组声明、遍历、数组全局变量使用小结
Jun 05 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
php实现无限级分类(递归方法)
Aug 06 PHP
yii数据库的查询方法
Dec 28 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
laravel异步监控定时调度器实例详解
Jun 21 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中的一个中文字符串截取函数
2007/02/14 PHP
PHP 防恶意刷新实现代码
2010/05/16 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
利用jqgrid实现上移下移单元格功能
2018/11/07 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
python检测某个变量是否有定义的方法
2015/05/20 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
python的命名规则知识点总结
2019/10/04 Python
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
接口的多继承会带来哪些问题
2015/08/17 面试题
初中女生自我鉴定
2013/12/19 职场文书
在校硕士自我鉴定
2014/01/23 职场文书
不假外出检讨书
2014/01/27 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
索赔员岗位职责
2015/02/15 职场文书
工程质检员岗位职责
2015/04/08 职场文书
网聊搭讪开场白
2015/05/28 职场文书
CSS3常见动画的实现方式
2021/04/14 HTML / CSS
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python