Я разрабатываю приложение с Zend-framework 3, которое требует управления ролями пользователей. Для этого я использую компонент zend-permission-rbac.
Но у меня все еще возникает ошибка:
Файл: /home/myhost/ppvc/module/User/src/Service/RbacManager.php:77
Сообщение: Класс 'Zend \ Permissions \ Rbac \ Rbac' не найден
Вот часть трассировки стека, если это может помочь:
Эта ошибка появляется, когда я впервые устанавливаю свой контейнер Rbac:
public function init($forceCreate = false)
{
if ($this->rbac!=null && !$forceCreate) {
// Already initialized; do nothing.
return;
}
// If user wants us to reinit RBAC container, clear cache now.
if ($forceCreate) {
$this->cache->removeItem('rbac_container');
}
// Try to load Rbac container from cache.
$result = false;
$this->rbac = $this->cache->getItem('rbac_container', $result);
if (!$result)
{
// Create Rbac container.
$rbac = new Rbac();
$this->rbac = $rbac;
.....
Также я правильно называю свой класс Rbac:
use Zend\Permissions\Rbac\Rbac;
Я не могу понять, откуда взялась эта ошибка, похоже, что папка vendor / zend-permissions-rbac не «читается» приложением. Я обновил файлы composer.json и composer.lock и проверил их, мой модуль правильно называется (composer.json):
"zendframework/zend-permissions-rbac": "^3.0",
Я следую этому руководству: Контроль доступа на основе ролей
Любая помощь приветствуется! (Извините, если я допустил ошибку, английский не мой язык)
Обновлено: я проверил свою версию PHP на предмет объявлений типа возвращаемого значения (потому что модуль Rbac полон этого), но я нахожусь в версии 7.2, поэтому с этим проблем нет.
Максим
Привет, Мехмет, спасибо за ответ! Да, я попробовал coposer dump autoload
, и он ничего не изменил, мне интересно, может ли это быть версия компонента RBAC, которая будет содержать ошибку?
Другой вариант, который следует рассмотреть, - это управление разрешениями как отдельной службы, чтобы можно было легко управлять политиками по мере увеличения масштаба и добавления дополнительных функций. https://cerbos.dev - один из примеров.
Это ошибка php. Значит, что-то напортачило с автозагрузкой. Он практически не может найти файл класса. Вы пробовали
dump autoload
на композиторе?