浅析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 Cookie的使用教程详解
Jun 03 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 PHP
递归删除一个节点以及该节点下的所有节点示例
Mar 19 PHP
php json转换成数组形式代码分享
Nov 10 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
PHP图像识别技术原理与实现
Oct 27 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
PHP获取数组中指定的一列实例
Dec 27 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
Apr 04 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
Apr 07 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实现伪静态方法汇总
2016/01/13 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
用ADODB.Stream转换
2007/01/22 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
python默认参数调用方法解析
2020/02/09 Python
Python项目跨域问题解决方案
2020/06/22 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
倡议书范文格式
2014/05/12 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技