浅析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 09 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
php登陆页的密码处理方式分享
Oct 14 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
PHP实现无限级分类(不使用递归)
Oct 22 PHP
php中final关键字用法分析
Dec 07 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 PHP
PHP whois查询类定义与用法示例
Apr 03 PHP
漂亮的thinkphp 跳转页封装示例
Oct 16 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
php桌面中心(一) 创建数据库
2007/03/11 PHP
php getsiteurl()函数
2009/09/05 PHP
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
Google 静态地图API实现代码
2010/11/19 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
js实现简单进度条效果
2020/03/25 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
机器学习python实战之决策树
2017/11/01 Python
python如何为被装饰的函数保留元数据
2018/03/21 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
python重试装饰器的简单实现方法
2019/01/31 Python
python的turtle库使用详解
2019/05/10 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
python os.rename实例用法详解
2020/12/06 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
应届护士推荐信
2013/11/16 职场文书
离职证明标准格式
2014/09/15 职场文书
个人职业及收入证明
2014/10/13 职场文书
酒店前台辞职书
2015/02/26 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
《青山不老》教学反思
2016/02/22 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技