我不熟悉基于硬编码值的应用程序制定决策,这可能会改变加班时间。例如:
如果用户有权访问moduleID为7的管理模块,应用程序会做出决定,然后我编写如下代码:
if(Auth :: user() - > moduleID == 7){ .....管理员..这里的东西......代码...... }
但是,下次如果管理模块ID以某种方式更改为其他名称4,我不想在所有代码中手动搜索7并更改为4。
是否有任何最佳方法可以避免在laravel中对决策语句进行硬编码...谢谢
答案 0 :(得分:0)
模块ID为7的管理模块
你不应该关心id
是什么。通过您可以控制的其他值跟踪和查找记录。
考虑在存储管理模块的表中添加另一列。在此列中存储一个不会随时间变化的标识符。
对于您的管理记录,您可以将标识符设置为'admin'
。
对于那些真正重要的标识符 - 稍后您将用于查找的标识符,请考虑将它们设置为类常量。
class Module extends Eloquent
{
const ADMIN = 'admin';
// ...
}
现在您可以与Module::ADMIN
进行比较,除非您明确更改上面定义的常量值,否则if (Auth::user()->module->identifier === Module::ADMIN) {
//
}
将永远不会更改。像
{{1}}