#1 小双
比如:

用php的explode(',',$acl_name)的方法来实现“一个权限数据,多个角色共用”?
2010-03-15 14:26:14
#2 jake
从几个方面来说:
1. explode(',',$acl_name)形式效率不高,这是很显然的,毕竟要把全部记录查出再进行循环判断。作为折衷的方式,可以建议使用acl_name1,acl_name2,acl_name3也就是大致上规定一个控制器/动作数据有三个权限,然后就增加三个字段来做。当然这不是很灵活,不过实践操作中已经足够了。
2. spAcl类中,有对权限判断的方法,如果你要将这个方法改造成自己的方法,比如说原来acl只能判断一个控制器/方法一个角色的,改成可以判断控制器/方法是否还有其他角色,这需要改变到acl的权限判断钩子,和无权限提示钩子(扩展acl的prompt)一样,权限判断钩子是(扩展acl的checker),看spAcl的代码,可以看到checker是默认使用spAclModel的check方法的,所以这个要在index.php设置里面重新设置成你自己的权限判断方法。
3. 这里给个建议,虽然将多个角色的数据变成统一,也是可以做到的。不过在实际操作中,这是没必要的。毕竟一一对应的数据会给数据表操作(增删改)带来更大的方便。把他们做到统一,只是视觉上数据整齐些。
2010-03-15 14:52:07