PHP混合(过程和OOO)应用程序中的访问控制和RBAC(基于角色的访问控制)

PHP混合(过程和OOO)应用程序中的访问控制和RBAC(基于角色的访问控制),php,Php,我有一个PHP混合(过程和OOP)应用程序,我想为它创建一个RBAC 我可以创建数据库表(权限、角色、用户等),我也可以在网上找到许多关于该主题的文章,但它们似乎都缺少最重要的部分: 我们想要保护的“资源” Zend_ACL似乎还可以,但我的应用程序不是基于MVC框架的 问题1 我想知道zend_acl是否松散耦合到足以使用,即使我的整个应用程序不是基于对象的。 问题2 当整个应用程序不是基于对象的时,如何定义资源 问题3 在处理异构(过程性和OOP)系统时,是否有任何好的非过时白皮书允许我创建

我有一个PHP混合(过程和OOP)应用程序,我想为它创建一个RBAC

我可以创建数据库表(权限、角色、用户等),我也可以在网上找到许多关于该主题的文章,但它们似乎都缺少最重要的部分: 我们想要保护的“资源”

Zend_ACL似乎还可以,但我的应用程序不是基于MVC框架的

问题1 我想知道zend_acl是否松散耦合到足以使用,即使我的整个应用程序不是基于对象的。

问题2 当整个应用程序不是基于对象的时,如何定义资源

问题3 在处理异构(过程性和OOP)系统时,是否有任何好的非过时白皮书允许我创建基于角色的系统

再次感谢

“资源”只是一个非常通用、抽象的东西,实际上它可以是任何东西。在结构良好的MVC体系结构中,此资源通常对应于类/方法名,而类/方法名又对应于URL。这和其他任何事情一样武断。即使在纯过程化PHP中,也可以任意定义资源:

$resource = 'root.foo.bar';
$user     = getCurrentUser();

if (!isAllowedToAccess($user, $resource)) {
    exit;
}

// do something that represents root.foo.bar
如果没有良好的OO结构,跟踪哪些代码表示对哪些资源的操作就更难,但这绝非不可能。如果脚本组织得很好,您可以简单地按照脚本的文件名进行查找

关于Zend_ACL(Zend_ACL),我不能具体地说什么,但如果它是硬连接到OO概念的,我会感到惊讶