Привет, ребята, я начинаю с Zend и пытаюсь понять, как это работает (добираюсь), и с помощью классов Acl люди, кажется, объявляют все роли и ресурсы в одном файле. Сейчас мне кажется, что это пустая трата системных ресурсов, если человек входит в систему как обычный пользователь или даже просто как гость / посетитель сайта. Поэтому я подумал, возможно ли иметь разные классы, которые устанавливают роли в зависимости от роли / ресурса текущего пользователя.
Моя текущая идея состоит в том, чтобы использовать переключатель / регистр для роли в начальной загрузке и загружать отдельные классы Acl на основе имени роли (например, sake, 'visitor' => 'Model_VisitorAcl', 'users' => 'Model_UserAcl 'and' admin '=>' Model_AdminAcl '), каждый с соответствующим файлом класса. Затем в файлах классов сделайте что-нибудь для каждого. Это работает, и в настоящее время я могу определить все мои «административные» acls в одном (возврат по иерархии прав администратора-пользователя-посетителя), затем в «user» есть «user» - «visitor» роли и ресурсы.
Однако это не кажется лучшим способом, как если бы я хотел изменить полномочия роли для «пользователя», мне нужно было бы изменить его для «пользователя» и «администратора». Это не проблема с 2 ролями, но на больших системах это очевидно.
Итак, я попробовал что-то вроде
class Model_AdminAcl extends Zend_Acl{
function __construct(){
$d = new Model_UserAcl();
//defining the admin role and permissions, with inheritance from the roles
//set in Model_UserAcl
}
}
Чтобы попытаться запустить функцию конструирования Model_UserAcl, установив таким образом роль «пользователь», однако, похоже, это не сработает, выдав «Uncaught исключения» Zend_Acl_Role_Registry_Exception »с сообщением« Родительский идентификатор роли «пользователи» не существует » "
ошибка.
Так каков следующий шаг? Наличие отдельных включаемых файлов для каждого модуля и наличие необходимых классов для их включения по мере необходимости?
Или я просто делаю из мухи слона с этой проблемой?
Спасибо,
Psy