Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在模型中为数据库中的每个值设置一个常量_Php_Mysql_Laravel 5_Constants_User Permissions - Fatal编程技术网

Php 在模型中为数据库中的每个值设置一个常量

Php 在模型中为数据库中的每个值设置一个常量,php,mysql,laravel-5,constants,user-permissions,Php,Mysql,Laravel 5,Constants,User Permissions,我有一个权限表,它最终将有多达100个权限。添加用户、编辑用户等。在我的权限模型中为每个权限创建一个常量是否可以接受 原因是,我将使用一个方法来检查用户是否具有权限,因此我希望能够执行类似$this->hasPermissionPermission::user_ADD这样的操作,而不必使用每次都需要我添加的幻数 我最初的目标是减少记录的数量,因此,我不需要对每个资源拥有单独的CRUD权限,而只需要拥有用户权限以及CRUD操作的相应列。但是,它对我来说不够灵活,因为在某些情况下,特定的许可不属于这

我有一个权限表,它最终将有多达100个权限。添加用户、编辑用户等。在我的权限模型中为每个权限创建一个常量是否可以接受

原因是,我将使用一个方法来检查用户是否具有权限,因此我希望能够执行类似$this->hasPermissionPermission::user_ADD这样的操作,而不必使用每次都需要我添加的幻数

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


我并不认为常数有什么问题,但如果这是一个糟糕的做法或类似的做法,我需要一些输入。提前感谢。

我个人认为,如果域需要,100个常量没有问题。在这种情况下,我可能会将常量移动到单独的类中,如:

<?php

abstract class Acl {
    const USER_ADD = 'USER_ADD';
    ...
}
然后通过以下选项进行检查:$this->haspmissionacl::USER\u ADD 这样,随着权限数量的增加,您的模型不会受到污染

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

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


谢谢你的意见。