Php 在模型中为数据库中的每个值设置一个常量
我有一个权限表,它最终将有多达100个权限。添加用户、编辑用户等。在我的权限模型中为每个权限创建一个常量是否可以接受 原因是,我将使用一个方法来检查用户是否具有权限,因此我希望能够执行类似$this->hasPermissionPermission::user_ADD这样的操作,而不必使用每次都需要我添加的幻数 我最初的目标是减少记录的数量,因此,我不需要对每个资源拥有单独的CRUD权限,而只需要拥有用户权限以及CRUD操作的相应列。但是,它对我来说不够灵活,因为在某些情况下,特定的许可不属于这些CRUD操作。例如,查看禁用的用户Php 在模型中为数据库中的每个值设置一个常量,php,mysql,laravel-5,constants,user-permissions,Php,Mysql,Laravel 5,Constants,User Permissions,我有一个权限表,它最终将有多达100个权限。添加用户、编辑用户等。在我的权限模型中为每个权限创建一个常量是否可以接受 原因是,我将使用一个方法来检查用户是否具有权限,因此我希望能够执行类似$this->hasPermissionPermission::user_ADD这样的操作,而不必使用每次都需要我添加的幻数 我最初的目标是减少记录的数量,因此,我不需要对每个资源拥有单独的CRUD权限,而只需要拥有用户权限以及CRUD操作的相应列。但是,它对我来说不够灵活,因为在某些情况下,特定的许可不属于这
我并不认为常数有什么问题,但如果这是一个糟糕的做法或类似的做法,我需要一些输入。提前感谢。我个人认为,如果域需要,100个常量没有问题。在这种情况下,我可能会将常量移动到单独的类中,如:
<?php
abstract class Acl {
const USER_ADD = 'USER_ADD';
...
}
然后通过以下选项进行检查:$this->haspmissionacl::USER\u ADD
这样,随着权限数量的增加,您的模型不会受到污染
根据个人经验,使用CRUD将权限对象存储在DB中通常没有任何好处,因为您可以添加权限对象,但它的新功能仍然必须存在于代码中。在以前的一个项目中,我们将对象存储在代码中,并引用数据库中的对象,例如,与您尝试实现的对象相反
另一方面,检查ACL的一些其他社区解决方案可能是有益的,例如,如下所示:
谢谢你的意见。