0

在 Zend Framework 1.X 中,以下哪种方法更好,为什么?
方法一:
创建一个扩展 Zend_Acl 的(子)类,用于管理所有的 Acl。它将允许我们使用 $this 对象来使用所有 Zend_Acl 特性/功能。

方法 2:
创建一个自定义类,其中包含 Zend_Acl 对象并对对象执行操作。在这里我们可以创建包装函数并且可以控制对 Zend_Acl 的基本函数的访问并且只使用少数特性。

单例模式也可用于这两种方法,以确保在整个站点中使用相同的 Zend_Acl。

我将寻找一种以后可以轻松移植到 ZF-2.0 的方法。如果有任何其他方法,请提及,我会相应地更新帖子。

更新:除了单例之外,还有其他方法可以在整个站点中维护单个 Zend_Acl 对象吗?您如何看待使用带有方法 1 的单例并使用自定义方法,这将为我们提供 Zend_Acl 的所有预定义方法以及我们的自定义包装器。

4

2 回答 2

3

我将寻找一种以后可以轻松移植到 ZF-2.0 的方法。如果有任何其他方法,请提及,我会相应地更新帖子。

此评论强烈支持方法 2,因为您的包装器充当 ACL 实现的适配器,并且您的应用程序仅与您的适配器交互,而不是Zend_Acl直接与适配器交互。因此,您可以稍后将特定实现(即 的组成Zend_Acl)更改为另一个,无论是Zend\Acl是 Symfony 2 组件还是您自己编写的东西。

于 2011-11-18T13:59:00.213 回答
0

在我的项目中,我使用一个模型来管理整个 ACL 系统(添加资源、添加角色等)。显然这个类扩展了 Zend_Acl。此外,我使用了一个使用 preDispatch 方法的插件来检查是否允许发出请求的用户访问请求的 url。

于 2011-11-18T23:46:16.220 回答