5

我已经看到很多关于这个主题的问题,但没有一个涵盖我的情况。

我正在构建一个基于 5 个类的 ACL 模块:

  1. 角色
  2. 特权
  3. 团体
  4. Wrapper(猜猜它做了什么..)Privilege、Role 和 Group 类的工厂
  5. 组/角色的 AccessList 存储(基于使用情况和案例)

我正在考虑使用 SplQueue 来存储权限级别(主要用于继承的权限)所以我正在考虑使用单个对象来存储所有内容,并且不认为普通的多维数组将是最佳选择。流程将像这种粘贴,它是TL;DR .. 对此感到抱歉。

所以我的问题是,在我的情况下,SplQueue 会过分吗?

我应该使用和替代 Spl 数据结构,如果是,是哪一个?

编辑 好吧,我想不出一个很好的用法示例,所以让我们继续使用基于 UNIX 的 GBAC。

4

1 回答 1

4

如果您想以对象形式存储数据,则使用SplObjectStorage. SplQueue 对于小数组来说会过大。

SplQueue 适用于 FIFO。

所以你不能直接访问最后一个或接近最后一个,这需要时间。

而不是SplQueue我建议您使用数组,因为您可以通过数组索引直接访问任何元素。

您还可以查看此问题的答案:Associative Array vs SplObjectStorage

您还可以检查 SPLobjectStorage 和数组的性能,这里是代码

更多信息请阅读这里

SplObjectStorage 绝对是线性缩放的。对于较小的数据集,阵列性能的可预测性较差(较大的标准偏差)。而 SplObjectStorage 确实是在集合中存储大量对象的更好解决方案。

因此,如果您的数据很小,那么您应该使用数组,否则使用SplObjectStorage大量数据。

于 2013-07-29T11:03:19.093 回答