漏刻有时数据可视化系统开发规范
1. 项目结构
项目采用MVC架构,主要目录结构如下:
├── api/ # API接口目录
├── app/ # 前端应用
│ ├── controller/ # 控制器
│ ├── model/ # 模型
│ ├── view/ # 视图
│ ├── base.php # 基础配置
│ ├── index.php # 入口文件
│ └── perm.php # 权限管理
├── butler/ # 后台管理系统
│ ├── controller/ # 控制器
│ ├── model/ # 模型
│ ├── view/ # 视图
│ ├── base.php # 基础配置
│ ├── index.php # 入口文件
│ └── perm.php # 权限管理
├── conf/ # 配置文件目录
│ ├── common.php # 公共函数
│ ├── config.php # 系统配置
│ ├── config.sys.php # 系统参数配置
│ ├── dbc.php # 数据库连接
│ └── lockdata.mysql.php # 数据库操作类
├── admin.php # 后台入口
├── app.php # 前端入口
└── butler.php # 后台入口
2. 编码规范
2.1 文件头部注释
所有PHP文件必须包含统一的头部注释模板:
php
<?php
if (!defined('LOCK_PATH')) exit('Access Denied');
2.2 命名规范
- 控制器类名 :使用大驼峰命名法,如
Login、Article - 方法名 :使用小驼峰命名法,如
loginIn、loginPwd - 变量名 :使用小驼峰命名法,如
$userInfo、$user_phone - 常量 :使用大写字母和下划线,如
LOCK_PATH、APP - 数据库表名 :使用小写字母和下划线,如
user、article - 字段名 :使用小写字母和下划线,如
user_id、user_name - 文件名 :
- 控制器文件:使用大驼峰命名法,如
Login.php - 模型文件:使用小写字母和下划线,如
login.php - 视图文件:使用小写字母和下划线,如
login_pwd.html
- 控制器文件:使用大驼峰命名法,如
2.3 代码风格
- 缩进:使用4个空格进行缩进
- 大括号:使用K&R风格,即左大括号与语句在同一行
- 行长度:每行代码长度不超过120个字符
- 空行:在逻辑块之间使用空行分隔
- 注释 :
- 使用
//进行单行注释 - 重要逻辑添加详细注释
- 函数和方法添加文档注释
- 使用
2.4 语法规范
- PHP版本:兼容PHP 5.6及以上版本
- 短标签 :使用
<?php ?>而非<? ?> - 错误控制 :使用
die()函数直接输出错误信息 - 数组语法 :使用
array()或[]语法定义数组 - 字符串连接 :使用
.运算符连接字符串 - 版本兼容性 :
- PHP 5.6:使用
isset()条件判断替代空合并运算符?? - PHP 7.0+:可以使用空合并运算符
??简化代码
- PHP 5.6:使用
3. 技术栈
- 后端:PHP 5.6+
- 模板引擎:Smarty
- 数据库:MySQL
- 会话管理:PHP session
- 加密解密 :
- 自定义加密函数(
lockDecrypt、AuthCode) openssl扩展(用于安全加密)
- 自定义加密函数(
- Cookie管理 :
setcookie()函数 - HTTP请求 :
curl扩展
4. 安全规范
- 输入验证:对所有用户输入进行严格验证
- SQL注入防护 :
- 使用参数化查询
- 使用
addslashes()函数进行字符转义 - 使用
strescape()方法进行安全处理
- 密码加密 :使用
md5()函数加密密码 - 会话安全 :
- 使用session和token进行验证
- 生成随机密钥(
generateCode())
- Cookie安全 :
- 设置
https和httponly属性 - 使用加密存储敏感信息
- 设置
- 权限控制 :
- 通过
perm.php文件进行权限管理 - 使用
checkAdminAuth()和checkUserStudyAuth()函数进行权限检查 - 使用
permAuth()函数防止越权操作
- 通过
- 操作日志 :使用
addlogs()函数记录重要操作 - XSS防护 :使用
get_str()函数过滤特殊字符 - 文件上传安全 :使用
checkHex()函数检测恶意代码
5. 开发流程
- 控制器:负责接收请求,调用模型处理数据,渲染视图
- 模型:负责数据处理,包括数据库操作、业务逻辑等
- 视图:负责页面展示,使用Smarty模板引擎
5.1 控制器开发规范
- 控制器类名与文件名保持一致
- 方法名使用小驼峰命名法
- 控制器方法应该简洁,主要负责调用模型和渲染视图
- 使用
$tpl->assign()传递变量到视图 - 使用
$tpl->display()渲染视图
5.2 模型开发规范
- 模型文件使用小写字母和下划线命名
- 使用
switch语句处理不同的操作类型 - 使用
$db对象进行数据库操作 - 返回JSON格式数据时使用
json_encode_lockdata()函数 - 记录操作日志使用
addlogs()函数 - 页面跳转使用
redirect()函数
5.3 视图开发规范
- 视图文件使用小写字母和下划线命名,以
.html为扩展名 - 使用Smarty模板语法
- 保持HTML结构清晰
- 使用CSS类名和ID命名规范
6. 数据库操作规范
使用封装的数据库操作方法:
- 查询单条数据 :
$db->fetch($table, $field, $condition, $sort) - 查询多条数据 :
$db->fetchall($table, $field, $condition, $sort, $limit) - 插入数据 :
$db->insert($table, $array) - 更新数据 :
$db->update($table, $array, $condition) - 删除数据 :
$db->delete($table, $condition) - 获取记录数 :
$db->rowcount($table, $condition) - 执行SQL :
$db->query($sql)、$db->exec($sql)
7. 公共函数规范
项目提供了丰富的公共函数,主要包括:
-
数据处理:
json_encode_lockdata():JSON编码(支持中文)AuthCode():加密解密safe_replace():安全过滤get_param():获取请求参数get_str():XSS防护limitWord():字符串截取htmtocode()、codetohtml():HTML转换
-
安全相关:
checkHex():检测恶意代码getip():获取客户端IPencodeId():ID加密permAuth():权限验证LockDecrypt():后端解密
-
业务逻辑:
getAdminTitle():获取管理员标题getBirthday():根据身份证获取生日getGender():性别转换getActLine():线上线下情况getSignType():报名类型getPayStatus():支付状态getVerify():审核状态departAuditStatus():单位审核状态
-
工具函数:
redirect():页面跳转addlogs():记录操作日志addMessage():系统短信getPages():分页unzip():解压缩create_in():拼接IN语句joinString():拼接字符串write_file():写入文件
8. 响应格式
API接口返回JSON格式数据:
json
{
"code": 1, // 1表示成功,0表示失败
"msg": "操作成功" // 提示信息
}
9. 错误处理
- 系统错误 :直接使用
die()函数输出错误信息 - 业务错误:返回JSON格式错误信息
- 权限错误 :使用
redirect()函数跳转到提示页面 - 操作日志:记录所有重要操作和错误信息
10. 版本兼容性
-
PHP 5.6:
- 使用
isset()条件判断替代空合并运算符?? - 使用
json_encode()配合正则处理中文字符 - 不使用PHP 7.0+特有的语法特性
- 使用
-
PHP 7.0+:
- 可以使用空合并运算符
??简化代码 - 可以使用
json_encode()的JSON_UNESCAPED_UNICODE参数
- 可以使用空合并运算符
11. 开发工具和环境
- 开发环境:PHPStudy Pro
- 数据库:MySQL
- 编辑器:支持PHP语法高亮的编辑器
- 调试工具:浏览器开发者工具、PHP错误日志
12. 代码审查和测试
-
代码审查:
- 检查命名规范
- 检查安全漏洞
- 检查代码风格
- 检查逻辑错误
-
测试:
- 功能测试
- 安全测试
- 性能测试
- 兼容性测试
13. 部署规范
- 文件权限:确保配置文件权限正确
- 环境配置:确保PHP版本和扩展满足要求
- 数据库配置:确保数据库连接信息正确
- 安全配置:配置HTTPS、防火墙等安全措施
通过遵循以上开发规范,可以保证代码的一致性、可维护性和安全性,提高开发效率和代码质量。