主题
字典功能
字典功能在后台一直是一个存在感很低的功能,尤其是前后端分离系统中。因为字典的数据在服务端,想要跟前端数据联动的话,需要对原始跟字段数据做一些标记。它最大的用处可能在生成代码的,为一些 Radio
组件或者 Select
Switch
组件提供一些基础数据。如下
扩展
当字典功能单独作为一个增删改查的功能,只能给前端生成页面提供一些基础数据的时候,其在后台的作用真的是非常小。但是在业务中又有很多地方用到这个。的确给定义一些选项提供了很大的方便,很大程度上保证了数据可以集中管理,不会那么分散。
但是在业务中,会有相当一部分逻辑判断会使用到字典的值。一旦需要使用到,很可能就是出现下面的代码
php
// 这里以 status 举例,有 1 和 2 两个状态
if ($model->status === 2) {}
这种代码在项目里如果大量出现的话,必定会是非常不可读的代码。会导致后期维护产生很多问题。所以以字典为枚举数据管理点,为字典自动生成枚举,提供给项目里面使用,最后会产生这样的代码
php
// 状态断言
if (Status::Enable->assert($model->status)) {}
这样的代码相较于之前有什么好处呢?
- 可读写提高非常之多
- 一旦
model->status === 2
大量出现在代码里,如果这个状态改变了,那么改动的地方非常至多,使用枚举,只需要改动枚举值即可
枚举生成
我们在字典功能提供了非常方便枚举生成功能
- 自动生成
- 对已有的枚举,会对字典内的值和当前枚举进行对比,如果不同,会覆盖生成
- 列表操作的可以将列表所有字典数据生成枚举
- 数据操作枚举可以生成对应字典的枚举类