浅析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的输入输出流
Feb 14 PHP
使用php重新实现PHP脚本引擎内置函数
Mar 06 PHP
PHP 实用代码收集
Jan 22 PHP
yii操作session实例简介
Jul 31 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
Sep 27 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
php中socket通信机制实例详解
Jan 03 PHP
smarty内置函数config_load用法实例
Jan 22 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
PHP整合PayPal支付
2015/06/11 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
Python标准库sched模块使用指南
2017/07/06 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
Eclipse面试题
2014/03/22 面试题
小班秋游活动方案
2014/02/22 职场文书
2014年元旦感言
2014/03/06 职场文书
工地标语大全
2014/06/18 职场文书
门店店长岗位职责
2015/04/14 职场文书
大学生团日活动总结
2015/05/06 职场文书
房屋所有权证明
2015/06/19 职场文书
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers