Итак, у меня есть класс PHP, называемый маршрутизатором, который берет URL-адрес и взрывает его, чтобы найти запрошенный компонент, действие и любые заданные значения. Затем он загружает ответственный класс, запускает действие и т. Д. И т. Д. Теперь я интегрирую доступ пользователя к пользователю через класс пользователя.Статическая функция класса доступа через переменную
Для каждого компонента (который является классом) у меня есть переменная класса статического класса, называемая «perms», которая содержит каждое действие как индекс и число как минимальное разрешение, необходимое для запуска действия. Каждый компонент также имеет статическую функцию для получения значения разрешения для имени переданного действия.
Проблема, с которой я столкнулась, - заставить статическую функцию работать правильно с именем класса, хранящегося в переменной. В маршрутизаторе я использую переменную для хранения имени компонента.
$this->controller // cms, calendar ,etc
Я затем добавить «Controller» к нему, чтобы получить имя класса
$class = $this->controller.'Controller'; // cmsController, calendarController, etc
Однако я получаю сообщение об ошибке при попытке использовать его для получения доступа к статической функции
$minActionPerm = $class::getPerms($this->action); // No go, parse error
У меня нет ошибки, когда я буквально печатаю имя класса, но это не настоящее решение.
$minActionPerm = cmsController::getPerms($this->action); // Good, but literal
Эта переменная также работает, когда я создаю объект класса для запуска действия.
$object = new $class();
Я уверен, что это, вероятно, только простой ответ - такие, как переменная используется, но это один я не знаю как сейчас.