为数据库中的每个值在模型中放置一个常量
Putting a constant in model for each value in the database
我有一个权限table,最终会有100个权限。 "Add User"、"Edit User" 等。是否可以接受 table 为我的 Permissions
模型中的每个权限创建一个 const
?
原因是我将使用一个方法来检查用户是否具有权限,因此我希望能够执行 $this->hasPermission(Permission::USER_ADD)
之类的操作,而不必使用每次都需要我完成的神奇数字。
我最初的目标是 trim 减少记录的数量,所以我没有为每个资源拥有单独的 CRUD 权限,我只拥有用户的权限以及用于 CRUD 操作的相应列.但是,它对我来说不够灵活,因为在某些情况下,特定权限不属于那些 CRUD 操作。例如,"View Disabled Users".
我没有特别发现常量有什么问题,但是如果这是一种不好的做法或类似的情况,我希望得到一些意见。提前致谢。
如果域需要,我个人认为 100 个常量没有问题。在这种情况下,我可能会做的是将常量移动到单独的 class,例如:
<?php
abstract class Acl {
const USER_ADD = 'USER_ADD';
...
}
然后检查那些:$this->hasPermission(Acl::USER_ADD)
这样您的模型就不会随着权限数量的增加而受到污染。
根据个人经验,使用 CRUD 将权限对象存储在数据库中通常没有任何好处,因为您可以添加权限对象,但它的新功能仍然必须存在于代码中。在之前的一个项目中,我们将对象存储在代码中并在数据库中引用它们,例如反之亦然。
另一方面,检查 ACL 的其他一些(社区)解决方案可能会有所帮助,例如:
我有一个权限table,最终会有100个权限。 "Add User"、"Edit User" 等。是否可以接受 table 为我的 Permissions
模型中的每个权限创建一个 const
?
原因是我将使用一个方法来检查用户是否具有权限,因此我希望能够执行 $this->hasPermission(Permission::USER_ADD)
之类的操作,而不必使用每次都需要我完成的神奇数字。
我最初的目标是 trim 减少记录的数量,所以我没有为每个资源拥有单独的 CRUD 权限,我只拥有用户的权限以及用于 CRUD 操作的相应列.但是,它对我来说不够灵活,因为在某些情况下,特定权限不属于那些 CRUD 操作。例如,"View Disabled Users".
我没有特别发现常量有什么问题,但是如果这是一种不好的做法或类似的情况,我希望得到一些意见。提前致谢。
如果域需要,我个人认为 100 个常量没有问题。在这种情况下,我可能会做的是将常量移动到单独的 class,例如:
<?php
abstract class Acl {
const USER_ADD = 'USER_ADD';
...
}
然后检查那些:$this->hasPermission(Acl::USER_ADD)
这样您的模型就不会随着权限数量的增加而受到污染。
根据个人经验,使用 CRUD 将权限对象存储在数据库中通常没有任何好处,因为您可以添加权限对象,但它的新功能仍然必须存在于代码中。在之前的一个项目中,我们将对象存储在代码中并在数据库中引用它们,例如反之亦然。
另一方面,检查 ACL 的其他一些(社区)解决方案可能会有所帮助,例如: