我目前正在查看我生成的代码,并试图提高其可读性和质量。这是我如何处理一个简单问题的示例,我一直认为这是一个糟糕的解决方案。
具有以下“状态”或本示例中的海拔级别的用户表
- 员工
- 主管
- 管理员
(这些可以是任何东西,例如,一个项目可以有“未完成”、“暂停”和“完成”状态)
过去,我总是将其存储为 INT 值,然后在打印出帐户及其状态时,我会编写一个函数将其转换回文本,以便打印在页面上,例如
if userLevel === 3 { return "Admin"; };
这一直是一个糟糕的解决方案,而且它不是很灵活。添加任何新类型的帐户都需要更新该功能。这种格式也使得阅读页面限制变得非常困难。
如果我要添加一行:
if userLevel !== 2 OR 3 {//重定向到错误页面 };
您可以看到这会如何变得令人困惑。
最近,我开始将这些“状态”纯粹存储为字符串,这样可读性更强。但现在我对 Laravel 的了解越来越多,我想知道我是否应该有额外的数据库表专门用于此。
那么我的问题是 - 这种数据的合适数据类型是什么,与之交互的理想方式是什么?
最佳答案
在遗留代码中,我会使用常量,基本上位并不重要,其中包含什么类型的数据。它是可读的,您可以轻松找到用法,您的 IDE 可以帮助您。
在包含大量业务逻辑的新代码中,您可以创建一个代表状态的小类,以便将逻辑放在那里。
在 DB 中 - 你可以找到几篇文章说枚举不是一个好主意。如果你想优化很多,tinyint 可以帮助你,但使用短字符串也很好(我通常使用它)。然后你应该在 php ofc 中翻译它,我推荐上面描述的对象方法。
关于php - 状态 - 使用哪种数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51208431/