浅析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函数
Oct 09 PHP
dede全站URL静态化改造[070414更正]
Apr 17 PHP
关于页面优化和伪静态
Oct 11 PHP
php google或baidu分页代码
Nov 26 PHP
PHP 小心urldecode引发的SQL注入漏洞
Oct 27 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 PHP
PHP中多线程的两个实现方法
Oct 14 PHP
thinkPHP模板引擎用法示例
Dec 08 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
Mar 13 PHP
基于Laravel实现的用户动态模块开发
Sep 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文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
python网络爬虫采集联想词示例
2014/02/11 Python
Python中进程和线程的区别详解
2017/10/29 Python
Python模块WSGI使用详解
2018/02/02 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
中专毕业生求职简历的自我评价
2013/10/21 职场文书
毕业生自我鉴定实例
2014/01/21 职场文书
情侣吵架检讨书
2014/02/05 职场文书
党支部承诺书范文
2014/03/28 职场文书
交通事故私了协议书
2014/04/16 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
销售助理岗位职责
2015/02/11 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python