Skip to content

数据字典

数据字典概述

数据字典是用于定义和管理枚举类型数据结构的核心机制。在系统设计中,这些枚举类型的常量(如支付方式)通常很少发生变化,将其定义为数据字典而非存储在数据库中,可使代码结构更清晰、易读,并支持多语言的灵活切换(包括运行时实时切换)。数据字典包括系统数据字典,第三方开发者定义的数据字典。

数据字典目录结构

数据字典在项目中主要位于 app/dict 目录下,整体采用模块化的组织方式:

plaintext
niucloud/
app/dict/
├─addon                                            #插件相关字典
│      AddonDict.php                               #定义插件相关状态和类型常量
├─applet                                           #小程序相关字典
│      AppletlDict.php                             #小程序配置和状态常量
├─cash_out                                         #提现相关字典   
│      CashOutTypeDict.php                         #提现类型和状态定义
├─channel                                          #渠道相关字典
│      AppDict.php                                 #应用平台类型常量  
│      CertDict.php                                #证书类型常量
│      ReplyDict.php                               #回复消息类型常量
│      WechatDict.php                              #微信相关类型和事件常量
├─common                                           #通用字典
│      ChannelDict.php                             #访问渠道类型(PC、H5等)
│      CommonActiveDict.php                        #营销活动类型常量
│      CommonDict.php                              #基础数据类型(如性别)
├─diy                                              #自定义页面相关字典
│      ComponentDict.php                           #DIY组件类型
│      LinkDict.php                                #链接类型
│      PagesDict.php                               #页面类型
│      TemplateDict.php                            #模板类型
├─diy_form                                         #自定义表单相关字典
│      ComponentDict.php                           #表单组件类型
│      ConfigDict.php                              #表单配置
│      TemplateDict.php                            #表单模板
│      TypeDict.php                                #表单类型
├─member                                           #会员相关字典
│      account_change_type.php                     #账户变动类型配置
│      benefits.php                                #会员权益配置
│      gift.php                                    #会员礼品配置
│      growth_rule.php                             #会员成长规则
│      MemberAccountChangeTypeDict.php             #会员账户变动类型
│      MemberAccountTypeDict.php                   #会员账户类型
│      MemberCashOutDict.php                       #会员提现状态
│      MemberDict.php                              #会员状态
│      MemberLevelDict.php                         #会员等级样式配置
│      MemberLoginTypeDict.php                     #会员登录方式
│      MemberRegisterChannelDict.php               #会员注册渠道
│      MemberRegisterTypeDict.php                  #会员注册类型
│      MemberSignDict.php                          #会员签到状态
│      MemberSignTypeDict.php                      #会员签到类型
│      point_rule.php                              #积分规则
├─menu                                             #菜单相关字典
│      admin.php                                   #后台菜单配置
│      site.php                                    #站点菜单配置
├─notice                                           #通知相关字典
│      notice.php                                  #通知配置
│      NoticeDict.php                              #通知基础定义
│      NoticeTypeDict.php                          #通知类型
│      sms.php                                     #短信通知配置
│      weapp.php                                   #小程序通知配置
│      wechat.php                                  #微微信通知配置
├─pay                                              #支付相关字典
│      OnlinePayDict.php                           #在线支付定义
│      OnlineRefundDict.php                        #在线退款定义
│      PayChannelDict.php                          #支付渠道字典
│      PayDict.php                                 #支付类型
│      PaySceneDict.php                            #支付场景
│      RefundDict.php                              #退款基础定义
│      TransferDict.php                            #转账定义    
├─poster                                           #海报相关字典
│      ComponentDict.php                           #海报组件类型
│      template.php                                #海报模板配置
├─scan                                             #扫码相关字典
│      ScanDict.php                                #扫码功能定义
├─schedule                                         #计划任务相关字典
│      ScheduleDict.php                            #计划任务定义
│      ScheduleLogDict.php                         #计划任务日志定义
│      schedule.php                                #计划任务配置
├─site                                             #站点相关字典
│      SiteDict.php                                #站点基础定义
│      SiteAccountLogDict.php                      #站点账户日志定义  
├─sys                                              #系统相关字典
│      AgreementDict.php                           #协议相关枚举类
│      AppTypeDict.php                             #应用类型定义
│      BackupDict.php                              #备份类型定义
│      CloudDict.php                               #云服务定义
│      ConfigKeyDict.php                           #配置键定义
│      DateDict.php                                #日期相关定义
│      ExportDict.php                              #导出类型定义
│      FileDict.php                                #文件类型定义
│      MenuDict.php                                #菜单基础定义
│      MenuTypeDict.php                            #菜单类型定义
│      MethodDict.php                              #传输方式
│      PosterDict.php                              #海报基础定义
│      PrinterDict.php                             #打印机类型定义
│      RoleStatusDict.php                          #角色状态定义
│      SmsDict.php                                 #短信基础定义
│      StorageDict.php                             #存储类型定义
│      UpgradeDict.php                             #升级类型定义
│      UserDict.php                                #用户基础定义
│      WechatMediaDict.php                         #微信媒体定义
│      WxOplatformDict.php                         #微信开放平台定义
└─verify                                           #验证相关字典
       VerifyDict.php                              #验证类型定义

除了核心应用的 app/dict 目录外,第三方开发者开发的插件也遵循相同的结构定义数据字典,通常位于各插件目录的 app/dict 下,如充值插件的数据字典:

plaintext
niucloud/addon/recharge/
app/dict/
├── RechargeOrderDict.php                           #充值订单数据字典
├── RechargePackageDict.php                         #充值套餐数据字典
├── diy                                             #自定义数据字典
├── member                                          #会员相关数据字典
├── menu                                            #菜单数据字典
├── notice                                          #通知数据字典
├── recharge                                        #充值核心数据字典
└── schedule                                        #调度数据字典

数据字典设计特点

1. 静态方法调用机制

数据字典中的函数均定义为静态(static)方法,开发者可直接通过类方法调用获取所需数据,无需实例化:

php
// 示例:获取会员账户积分类型
$data['account_type'] = MemberAccountTypeDict::POINT;

2. 多语言支持

数据字典设计支持多语言切换,通过与系统语言包配合,可在运行时实现枚举值显示文本的语言切换。

基于 MIT 协议发布