Laravel避免在代码中使用硬编码值

时间:2016-07-20 17:47:39

标签: laravel-5

我不熟悉基于硬编码值的应用程序制定决策,这可能会改变加班时间。例如:

如果用户有权访问moduleID为7的管理模块,应用程序会做出决定,然后我编写如下代码:

if(Auth :: user() - > moduleID == 7){ .....管理员..这里的东西......代码...... }

但是,下次如果管理模块ID以某种方式更改为其他名称4,我不想在所有代码中手动搜索7并更改为4。

是否有任何最佳方法可以避免在laravel中对决策语句进行硬编码...谢谢

1 个答案:

答案 0 :(得分:0)

  

模块ID为7的管理模块

你不应该关心id是什么。通过您可以控制的其他值跟踪和查找记录。

考虑在存储管理模块的表中添加另一列。在此列中存储一个不会随时间变化的标识符。

对于您的管理记录,您可以将标识符设置为'admin'

对于那些真正重要的标识符 - 稍后您将用于查找的标识符,请考虑将它们设置为类常量。

class Module extends Eloquent
{
    const ADMIN = 'admin';

    // ...
}

现在您可以与Module::ADMIN进行比较,除非您明确更改上面定义的常量值,否则if (Auth::user()->module->identifier === Module::ADMIN) { // } 将永远不会更改。像

这样的东西
{{1}}