我想创建一个用于ACL管理的Zend控制器,所以我的问题是:如何获取Zend应用程序中的所有模块名称,控制名称和操作名称来构建ACL控制?
我使用Zend_Navigation,如果您的ACL中不存在该资源,则Zend_Navigation将抛出异常.而且我想使用数据库来拒绝并允许访问.所以我必须先建立数据库.如果我必须手工做,这样做是一件很痛苦的事情.
这可能是一个旧问题,但这正是我这样做
$front = $this->getFrontController(); $acl = array(); foreach ($front->getControllerDirectory() as $module => $path) { foreach (scandir($path) as $file) { if (strstr($file,"Controller.PHP") !== false) { include_once $path . DIRECTORY_SEPARATOR . $file; foreach (get_declared_classes() as $class) { if (is_subclass_of($class,'Zend_Controller_Action')) { $controller = strtolower(substr($class,strpos($class,"Controller"))); $actions = array(); foreach (get_class_methods($class) as $action) { if (strstr($action,"Action") !== false) { $actions[] = $action; } } } } $acl[$module][$controller] = $actions; } } }