为模型中的每个值设置常量

时间:2017-06-27 13:51:09

标签: php mysql laravel-5 constants user-permissions

我有一个权限表,最终将拥有最多100个权限。诸如“添加用户”,“编辑用户”等内容。为const模型中的每个权限创建Permissions是否可以接受?

原因是我将使用一种方法来检查用户是否拥有权限,因此我希望能够执行$this->hasPermission(Permission::USER_ADD)之类的操作,而不必使用魔法每次都要求我提出的数字。

我最初的目标是减少记录数量,因此我不是拥有每个资源的单独CRUD权限,而是拥有用户权限以及CRUD操作的相应列。但是,它对我来说不够灵活,因为有些情况下特定权限不属于这些CRUD操作。例如,“查看已禁用的用户”。

我没有特别看到常量的问题,但是如果这是一种不好的做法之类的话,想要一些输入。提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果域名需要,我个人不会看到100个常量的问题。在这种情况下我可能会做的是将常量移动到单独的类,如:

<?php

abstract class Acl {
    const USER_ADD = 'USER_ADD';
    ...
}

然后由那些人检查:$this->hasPermission(Acl::USER_ADD) 这样,随着权限数量的增加,您的模型不会受到污染。

根据个人经验,使用CRUD将权限对象存储在数据库中通常没有任何好处,因为您可以添加权限对象,但新功能仍然必须存在于代码中。在之前的一个项目中,我们将对象存储在代码中并引用数据库中的对象,例如反之亦然。

另一方面,检查ACL的其他(社区)解决方案可能是有益的,例如: