gpt4 book ai didi

php - 为数据库中的每个值在模型中放置一个常量

转载 作者:行者123 更新时间:2023-11-29 10:44:52 25 4
gpt4 key购买 nike

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

原因是我将有一个方法用于检查用户是否具有权限,因此我希望能够执行类似 $this->hasPermission(Permission: :USER_ADD) 并且不必使用需要我每次都进行设置的魔数(Magic Number)。

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

我并没有特别看到常量的问题,但如果这是一个不好的做法或类似的情况,我希望得到一些意见。提前致谢。

最佳答案

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

<?php

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

然后检查:$this->hasPermission(Acl::USER_ADD)这样,当您增加权限数量时,您的模型就不会受到污染。

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

另一方面,检查 ACL 的其他(社区)解决方案可能会有所帮助,例如以下内容:

关于php - 为数据库中的每个值在模型中放置一个常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44782081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com